📄 ccdb.cpp
字号:
return ERR_BUS_PARAMSIZE;
}
//设置统计sql语句
swprintf(wcSql,L"select SceneID from SceneDevTable where SceneID = %d and DevID=%d",
*((int*)pstrReqParam->pBuf),*(((int*)pstrReqParam->pBuf)+1));
}
break;
case BUSINESS_SCENE:// 场景表
{//参数:房间ID、场景ID、场景名称
if(pstrReqParam->nSize != (CC_SCENE_NAME_LEN+sizeof(int)))
{
return ERR_BUS_PARAMSIZE;
}
SumParamScene *pParamScene=(SumParamScene*)pstrReqParam->pBuf;
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,(char*)pParamScene->SceneName,CC_SCENE_NAME_LEN,cwTemp,100);
ReplaceYinhao(cwTemp);
//设置统计sql语句
swprintf(wcSql,L"select SceneID from SceneTable where HouseID = %d and Name='%s'",
pParamScene->nHouseID,cwTemp);
}
break;
case BUSINESS_HOUSE:// 房间
{//参数:房间名称
if(pstrReqParam->nSize != sizeof(SumParamHouse))
{
return ERR_BUS_PARAMSIZE;
}
SumParamHouse *pParamHouse=(SumParamHouse*)pstrReqParam->pBuf;
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParamHouse->HouseName,CC_ROOM_NAME_LEN,cwTemp,100);
ReplaceYinhao(cwTemp);
//设置统计sql语句
swprintf(wcSql,L"select HouseID from HouseTable where Name='%s'",
cwTemp);
}
break;
case BUSINESS_CARD:// 卡号(用户
{//参数:卡编号
if(pstrReqParam->nSize != sizeof(SumParamCard))
{
return ERR_BUS_PARAMSIZE;
}
SumParamCard *pParamCard=(SumParamCard*)pstrReqParam->pBuf;
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParamCard->CardNum,CC_CARD_NUM_LEN,cwTemp,100);
ReplaceYinhao(cwTemp);
//设置统计sql语句
swprintf(wcSql,L"select CardID from CardTable where Number='%s'",
cwTemp);
}
break;
case BUSINESS_LOCKCODE://门磁码表
{//参数:门磁码
if(pstrReqParam->nSize != sizeof(SumParamLock))
{
return ERR_BUS_PARAMSIZE;
}
SumParamLock *pParamLock=(SumParamLock*)pstrReqParam->pBuf;
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParamLock->LockName,CC_DOOR_MAGCODE_LEN,cwTemp,100);
ReplaceYinhao(cwTemp);
//设置统计sql语句
swprintf(wcSql,L"select LockID from LockCodeTable where Code='%s'",
cwTemp);
}
break;
case BUSINESS_PARTDEFENCE:
{//根据 检查是否重复
int nsumsize=sizeof(SumParamPartDefence);
if(pstrReqParam->nSize != sizeof(SumParamPartDefence))
{
return ERR_BUS_PARAMSIZE;
}
SumParamPartDefence *pParam=(SumParamPartDefence*)pstrReqParam->pBuf;
//设置统计sql语句
swprintf(wcSql,L"select ID from PartDefenceTable where HouseID=%d \
and Type =%d and StartTime=%d and EndTime =%d",
pParam->nRoomId,pParam->cLookType,pParam->nStartTime,pParam->nEndTime);
}
break;
case BUSINESS_ADDRLIST_GROUP:
{//1026 //通讯簿分组表:【组名称】和【组类型ID】
if(pstrReqParam->nSize != sizeof(SumParamGroup))
{
return ERR_BUS_PARAMSIZE;
}
SumParamGroup *pParam=(SumParamGroup*)pstrReqParam->pBuf;
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParam->nGroupName,PHONEBOOKGROUP_NAME_LEN,cwTemp,100);
ReplaceYinhao(cwTemp);
//设置统计sql语句
swprintf(wcSql,L"select ID from AddrGroupTable where Type=%d and Name='%s'",pParam->nGroup,
cwTemp);
}
break;
case BUSINESS_ADDRLIST_PM:
{//1027 //普美用户通讯录:【组ID】和【姓名】
if(pstrReqParam->nSize != sizeof(SumParamPMBook))
{
return ERR_BUS_PARAMSIZE;
}
SumParamPMBook *pParam=(SumParamPMBook*)pstrReqParam->pBuf;
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParam->szName,CC_NAME_LEN,cwTemp,100);
ReplaceYinhao(cwTemp);
//设置统计sql语句
swprintf(wcSql,L"select UserID from PMAddrListTable where GroupID=%d and Name='%s'",pParam->nGroupID,
cwTemp);
}
break;
case BUSINESS_ADDRLIST_PT:
{//1028 //普通用户通讯录:【组ID】和【昵称】
if(pstrReqParam->nSize != sizeof(SumParamPTBook))
{
return ERR_BUS_PARAMSIZE;
}
SumParamPTBook *pParam=(SumParamPTBook*)pstrReqParam->pBuf;
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParam->szName,CC_NAME_LEN,cwTemp,100);
ReplaceYinhao(cwTemp);
//设置统计sql语句
swprintf(wcSql,L"select UserID from PTAddrListTable where GroupID=%d and Name='%s'",pParam->nGroupID,
cwTemp);
}
break;
case BUSINESS_INFRAREFUN: // 红外功能表
{
if(pstrReqParam->nSize != sizeof(int)*2)
{
return ERR_BUS_PARAMSIZE;
}
//设置统计sql语句
swprintf(wcSql,L"select Id from InfrareFunTable \
where FunID=%d and DevID=%d",
*((int*)pstrReqParam->pBuf),*(((int*)pstrReqParam->pBuf)+1));
}
break;
case BUSINESS_INFRAREFUNBIND:
{// //遥控器按键绑定:按键值和房间ID
if(pstrReqParam->nSize != sizeof(int)*2)
{
return ERR_BUS_PARAMSIZE;
}
//设置统计sql语句
swprintf(wcSql,L"select Idx from InfrareFunBindTable as a,DevTable as b \
where KeyVal=%d and ObjectType=%d and ObjectID=DevID and HouseID=%d \
UNION \
select Idx from InfrareFunBindTable as a,SceneTable as b \
where KeyVal=%d and ObjectType=%d and ObjectID=SceneID and HouseID=%d ",
*((int*)pstrReqParam->pBuf),REMOTEBIND_DEV,*(((int*)pstrReqParam->pBuf)+1),
*((int*)pstrReqParam->pBuf),REMOTEBIND_SCENE,*(((int*)pstrReqParam->pBuf)+1)
);
}
break;
default:
{
return ERR_BUS_MOTHEDNONE;
}
break;
}
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
int nCount=g_DataBase.CountSql(wcSql);
g_DataBase.CloseData();
return nCount;
}
break;
case ACTION_SUMGROUP: //统计指定父表ID(外键)的所有记录数
{
WCHAR wcSql[300]=L"";
if(BusList[busindex].FKeyIndex<0)
return ERR_BUS_FOREIGNKEY;
if(pstrReqParam->nSize != sizeof(int))
return ERR_BUS_PARAMSIZE;
//设置统计sql语句
swprintf(wcSql,L"select * from %s where %s = %d",BusList[busindex].Name,(BusList[busindex].pBusFields + BusList[busindex].FKeyIndex)->NAME,
*((int *)pstrReqParam->pBuf)
);
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
int nCount=g_DataBase.CountSql(wcSql);
g_DataBase.CloseData();
return nCount;
}
break;
case ACTION_SUMALL: //统计所有记录数(本地)
{
WCHAR wcSql[300]=L"";
if(BusList[busindex].FKeyIndex<0)
return ERR_BUS_FOREIGNKEY;
if(pstrReqParam->nSize != sizeof(int))
return ERR_BUS_PARAMSIZE;
//设置统计sql语句
swprintf(wcSql,L"select * from %s",BusList[busindex].Name);
// swprintf(wcSql,L"select %s from %s",BusList[busindex].pBusFields->NAME,BusList[busindex].Name);
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
int nCount=g_DataBase.CountSql(wcSql);
g_DataBase.CloseData();
return nCount;
}
break;
default:
{//单业务特殊功能处理
if(pOut !=NULL)
*pOut=NULL;
WCHAR cwTemp[100]=L"";
int nRet=0;
switch(pstrReqParam->nBusID)
{
case BUSINESS_CCINFO:
{
if(ACTION_MODIFY_CCINFOID==pstrReqParam->nMethod)
{//更改中控ID
if(pstrReqParam->nSize != sizeof(int) *2)
{
return ERR_BUS_PARAMSIZE;
}
swprintf(cwSql,L"Update CCInfoTable set CCID= %d where CCID=%d",
*(((int*)pstrReqParam->pBuf)+1),*(int*)pstrReqParam->pBuf);
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
BOOL bRet=g_DataBase.ExecuteSql(cwSql);
g_DataBase.CloseData();
if(bRet)
return ERR_BUS_SUCCESS;
else
return ERR_BUS_SQLEXE;
}else
{
return ERR_BUS_MOTHEDNONE;
}
}
break;
case BUSINESS_HOUSE:
{
if((ACTION_HOUSE_QUERYBYDEVTYPE==pstrReqParam->nMethod))
{//查询房间具有人体红外设备的房间信息 1011 21 改成根据参数指定的设备类型
if(pstrReqParam->nSize != sizeof(short) )
{
return ERR_BUS_PARAMSIZE;
}
swprintf(cwSql,L"select * from housetable where houseid in(select HouseID from devtable where Devtype=%d)",
*(short*)pstrReqParam->pBuf);
}else
{
return ERR_BUS_MOTHEDNONE;
}
}
break;
case BUSINESS_DEV:
{
if((ACTION_DEV_QUERYBYADDR==pstrReqParam->nMethod))
{//按地址查询设备
if(pstrReqParam->nSize != sizeof(short) *2)
{
return ERR_BUS_PARAMSIZE;
}
swprintf(cwSql,L"select * from %s where DevAddr=%d and SysAddr=%d",BusList[busindex].Name,
*(short*)pstrReqParam->pBuf,*(((short*)pstrReqParam->pBuf)+1));
}else if(ACTION_DEV_QUERYBYDEVTYPE==pstrReqParam->nMethod)
{//根据设备类型查询设备
if(pstrReqParam->nSize != sizeof(short))
{
return ERR_BUS_PARAMSIZE;
}
swprintf(cwSql,L"select * from DevTable where DevType =%d",*(short*)pstrReqParam->pBuf);
}else if(ACTION_DEV_QUERYBYBINDDEVID==pstrReqParam->nMethod)
{//根据虚设备ID查询绑定的设备
if(pstrReqParam->nSize != sizeof(int))
{
return ERR_BUS_PARAMSIZE;
}
swprintf(cwSql,L"select * from DevTable where RealDevID =%d",*(int*)pstrReqParam->pBuf);
}else if(ACTION_DEV_UPDATE_ONLINE==pstrReqParam->nMethod )
{
if(pstrReqParam->nSize != sizeof(short)*2 +1)
{
return ERR_BUS_PARAMSIZE;
}
swprintf(cwSql,L"Update DevTable set IsOnLine=%d \
where (SysAddr=%d and DevAddr=%d) or \
DevID in (select virtual.DevId from DevTable as real,DevTable as virtual where real.SysAddr=%d and real.DevAddr=%d and real.DevID = virtual.RealDevID)",
*((BYTE*)pstrReqParam->pBuf+4),*(short*)pstrReqParam->pBuf,*(((short*)pstrReqParam->pBuf)+1),
*(short*)pstrReqParam->pBuf,*(((short*)pstrReqParam->pBuf)+1));
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
nRet=g_DataBase.ExecuteSql(cwSql);
g_DataBase.CloseData();
//发送同步消息
/* num=sizeof(BusToCmdList)/sizeof(BusToCmdList[0]);
for(i=0;i<num;i++)
{
if(BusToCmdList[i].nBus== pstrReqParam->nBusID)
break;
}
if(nRet && i <num && bSyn)
*/ if(nRet && bSyn)
{
#ifndef _USEBYLHL
struct devce_state_info DevInfo;
memset(&DevInfo,0,sizeof(struct devce_state_info));
DevInfo.shSysAddr = *(short*)pstrReqParam->pBuf;
DevInfo.shDevAddr =*(((short*)pstrReqParam->pBuf)+1);
DevInfo.stateType=0;
DevInfo.cOnLine=*((BYTE*)pstrReqParam->pBuf+4);
DLLSynFuntInterfaceBug(pstrReqParam->nBusID,SYS_ACTION_DEV_STATUS,(char*)pstrReqParam->pBuf,sizeof(short)*2,
(char*)&DevInfo,sizeof(struct devce_state_info));
#endif
}
if(nRet )
return ERR_BUS_SUCCESS;
else
return ERR_BUS_SQLEXE;
}
else if(ACTION_DEV_UPDATE_ENABLE==pstrReqParam->nMethod)
{
if(pstrReqParam->nSize != sizeof(short)*2 +1)
{
return ERR_BUS_PARAMSIZE;
}
swprintf(cwSql,L"Update DevTable set SysStatus=%d,Value=0 \
where (SysAddr=%d and DevAddr=%d) or \
DevID in (select virtual.DevId from DevTable as real,DevTable as virtual where real.SysAddr=%d and real.DevAddr=%d and real.DevID = virtual.RealDevID)",
*((BYTE*)pstrReqParam->pBuf+4),*(short*)pstrReqParam->pBuf,*(((short*)pstrReqParam->pBuf)+1),
*(short*)pstrReqParam->pBuf,*(((short*)pstrReqParam->pBuf)+1));
// wprintf(_T("----------------------sql=%s\n"),cwSql);
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
nRet=g_DataBase.ExecuteSql(cwSql);
g_DataBase.CloseData();
//发送同步消息
/* num=sizeof(BusToCmdList)/sizeof(BusToCmdList[0]);
for(i=0;i<num;i++)
{
if(BusToCmdList[i].nBus== pstrReqParam->nBusID)
break;
}
if(nRet && i <num && bSyn)
*/ if(nRet && bSyn)
{
#ifndef _USEBYLHL
struct devce_state_info DevInfo;
memset(&DevInfo,0,sizeof(struct devce_state_info));
DevInfo.shSysAddr = *(short*)pstrReqParam->pBuf;
DevInfo.shDevAddr =*(((short*)pstrReqParam->pBuf)+1);
DevInfo.stateType=2;
DevInfo.cStop=*((BYTE*)pstrReqParam->pBuf+4);
DLLSynFuntInterfaceBug(pstrReqParam->nBusID,SYS_ACTION_DEV_STATUS,(char*)pstrReqParam->pBuf,sizeof(short)*2,
(char*)&DevInfo,sizeof(struct devce_state_info));
#endif
}
if(nRet )
return ERR_BUS_SUCCESS;
else
return ERR_BUS_SQLEXE;
}
else if(ACTION_DEV_UPDATE_ENABLE_BYID==pstrReqParam->nMethod)
{
if(pstrReqParam->nSize != sizeof(int) +1)
{
return ERR_BUS_PARAMSIZE;
}
swprintf(cwSql,L"Update DevTable set SysStatus=%d,Value=0 \
where (DevID=%d) or \
DevID in (select virtual.DevId from DevTable as real,DevTable as virtual where real.DevID=%d and real.DevID = virtual.RealDevID)",
*((BYTE*)pstrReqParam->pBuf+4),*(int*)pstrReqParam->pBuf,
*(int*)pstrReqParam->pBuf);
// wprintf(_T("----------------------sql=%s\n"),cwSql);
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
nRet=g_DataBase.ExecuteSql(cwSql);
g_DataBase.CloseData();
//发送同步消息
/* num=sizeof(BusToCmdList)/sizeof(BusToCmdList[0]);
for(i=0;i<num;i++)
{
if(BusToCmdList[i].nBus== pstrReqParam->nBusID)
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -