📄 ccdb.cpp
字号:
case BUSINESS_ADDRLIST_GROUP: //通讯簿分组表
{
WCHAR SqlIst[3][150];
//如果是临时卡,删除时间
swprintf(SqlIst[0],L"Delete from PTAddrListTable where GroupID=%d",
*((int *)pstrReqParam->pBuf));
swprintf(SqlIst[1],L"Delete from PMAddrListTable where GroupID=%d",
*((int *)pstrReqParam->pBuf));
swprintf(SqlIst[2],L"delete from AddrGroupTable where Id =%d ",
*((int *)pstrReqParam->pBuf));
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
NodeSql *pFirst,*pNode=NULL,*pNext=NULL;
for(int i=0;i<3;i++)
{
pNext=new NodeSql;
memset(pNext,0,sizeof(NodeSql));
pNext->pSql = SqlIst[i];
if(pNode==NULL)
{
pNode=pNext;
pFirst=pNext;
}else
{
pNode->pNext=pNext;
pNode=pNext;
}
}
BOOL bDel=g_DataBase.ExecuteSql(pFirst);
//删除
while(pFirst)
{
pNode=pFirst;
pFirst=pFirst->pNext;
delete pNode;
}
g_DataBase.CloseData();
if(bDel)
{
//发送同步消息
/* num=sizeof(BusToCmdList)/sizeof(BusToCmdList[0]);
for(int i=0;i<num;i++)
{
if(BusToCmdList[i].nBus== pstrReqParam->nBusID)
break;
}
*/
#ifndef _USEBYLHL
// if(i <num && bSyn)
if(bSyn)
{//??默认都是第一个为主键ID
DLLSynFuntInterfaceBug(pstrReqParam->nBusID,SYS_ACTION_DEL,(char*)pstrReqParam->pBuf,sizeof(int));
}
#endif
return ERR_BUS_SUCCESS;
}
else
return ERR_BUS_SQLEXE;
}break;
case BUSINESS_CCINFO: // 中控用户信息表
case BUSINESS_SECTION: // 区号表
case BUSINESS_PROVINCE: // 省表
// case BUSINESS_SCENEDEV: // 场景设备表
// case BUSINESS_TIMER: // 定时器表
// case BUSINESS_RING: // 铃声表
// case BUSINESS_HOUSE: // 房间
case BUSINESS_HOUSETYPE: // 房间类型表
// case BUSINESS_GUARDLOCK: // 门禁门磁绑定表
case BUSINESS_PASSRECORD: // 进出记录表
// case BUSINESS_MAIL: // 邮件表
case BUSINESS_ALARMCONFIG: // 报警设置表
case BUSINESS_ALARMSPRING: // 报警触发表
case BUSINESS_ALARMNOTIFY: // 报警通知记录表
// case BUSINESS_INFRAREFUN: // 红外功能表
// case BUSINESS_INFRAREFUNBIND: // 红外功能绑定表
// case BUSINESS_OUTGOING: // 开支明显表
// case BUSINESS_ADDRLIST_PM: //普美用户通讯录
// case BUSINESS_ADDRLIST_PT: //普通用户通讯录
// case BUSINESS_PARTDEFENCE: //局部设防表
// case BUSINESS_LOCKCODE: //门磁码表
// case BUSINESS_CARDTIMER:
return ERR_BUS_MOTHEDSUPPORT;
break;//卡有效时间表
}
WCHAR wcSql[300]=L"";
//检查输入参数
if(BusList[busindex].KeyIndex2 >=0)
{
if(pstrReqParam->nSize != sizeof(int)*2)
return ERR_BUS_PARAMSIZE;
//设置Sql删除语句
swprintf(wcSql,L"delete from %s where %s = %d and %s = %d",BusList[busindex].Name,
(BusList[busindex].pBusFields + BusList[busindex].KeyIndex1)->NAME,
*((int *)pstrReqParam->pBuf),
(BusList[busindex].pBusFields + BusList[busindex].KeyIndex2)->NAME,
*((int *)pstrReqParam->pBuf+1)
);
}else
{
if(pstrReqParam->nSize != sizeof(int))
return ERR_BUS_PARAMSIZE;
//设置Sql删除语句
swprintf(wcSql,L"delete from %s where %s = %d",BusList[busindex].Name,
(BusList[busindex].pBusFields + BusList[busindex].KeyIndex1)->NAME,
*((int *)pstrReqParam->pBuf)
);
}
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
BOOL bDel=g_DataBase.ExecuteSql(wcSql);
if(BUSINESS_SCENE== pstrReqParam->nBusID)
{
WCHAR wcSql1[1024]=L"";
swprintf(wcSql1,L"delete from scenedevtable where sceneid=%d;",
*((int *)pstrReqParam->pBuf));
g_DataBase.ExecuteSql(wcSql1);
}
g_DataBase.CloseData();
if(bDel)
{
if(BUSINESS_VOICEMSG ==pstrReqParam->nBusID)
{// 语音留言表
DLLDeleteVoice(*((int *)pstrReqParam->pBuf));
return ERR_BUS_SUCCESS;
}
//发送同步消息
/* num=sizeof(BusToCmdList)/sizeof(BusToCmdList[0]);
for(i=0;i<num;i++)
{
if(BusToCmdList[i].nBus== pstrReqParam->nBusID)
break;
}
*/
#ifndef _USEBYLHL
// if(i <num && bSyn)
if(bSyn)
{//??默认都是第一个为主键ID
// DLLSynFuntInterfaceBug(BusToCmdList[i].nCmd,SYS_ACTION_DEL,(int*)pstrReqParam->pBuf,1);
if(pstrReqParam->nBusID ==BUSINESS_SCENEDEV )
DLLSynFuntInterfaceBug(pstrReqParam->nBusID,SYS_ACTION_DEL,(char*)pstrReqParam->pBuf,sizeof(int)*2);
else
DLLSynFuntInterfaceBug(pstrReqParam->nBusID,SYS_ACTION_DEL,(char*)pstrReqParam->pBuf,sizeof(int));
}
#endif
return ERR_BUS_SUCCESS;
}
else
return ERR_BUS_SQLEXE;
}
break;
case ACTION_DELGROUP: //删除指定父表ID(外键)
{
switch(pstrReqParam->nBusID)
{//不支持组删除的业务类型
case BUSINESS_CCINFO: // 中控用户信息表
case BUSINESS_SECTION: // 区号表
case BUSINESS_PROVINCE: // 省表
case BUSINESS_DEV: // 设备表
case BUSINESS_SCENE: // 场景表
// case BUSINESS_SCENEDEV: // 场景设备表
case BUSINESS_TIMER: // 定时器表
case BUSINESS_CLOCK: // 闹钟表
case BUSINESS_RING: // 铃声表
case BUSINESS_SCHEDULE: // 日程表
case BUSINESS_HOUSE: // 房间
case BUSINESS_HOUSETYPE: // 房间类型表
case BUSINESS_CARD: // 卡号(用户
case BUSINESS_GUARDLOCK: // 门禁门磁绑定表
case BUSINESS_PASSRECORD: // 进出记录表
case BUSINESS_VOICEMSG: // 语音留言表
case BUSINESS_TICKLER: // 备忘录表
case BUSINESS_MAIL: // 邮件表
case BUSINESS_ALARMCONFIG: // 报警设置表
case BUSINESS_ALARMSPRING: // 报警触发表
case BUSINESS_ALARMNOTIFY: // 报警通知记录表
// case BUSINESS_INFRAREFUN: // 红外功能表
case BUSINESS_INFRAREFUNBIND: // 红外功能绑定表
case BUSINESS_OUTGOING: // 开支明显表
case BUSINESS_ADDRLIST_GROUP: //通讯簿分组表
case BUSINESS_ADDRLIST_PM: //普美用户通讯录
case BUSINESS_ADDRLIST_PT: //普通用户通讯录
case BUSINESS_PARTDEFENCE: //局部设防表
case BUSINESS_LOCKCODE: //门磁码表
case BUSINESS_CARDTIMER:
case BUSINESS_TELVIDEORECORD: //局部设防表
case BUSINESS_INTERFPHONERECORD: //可视对讲记录
return ERR_BUS_MOTHEDSUPPORT;
break;//卡有效时间表
} 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"delete 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;
}
BOOL bDel=g_DataBase.ExecuteSql(wcSql);
g_DataBase.CloseData();
if(bDel)
{
if(bSyn)
{
DLLSynFuntInterfaceBug(pstrReqParam->nBusID,pstrReqParam->nMethod,(char*)pstrReqParam->pBuf,sizeof(int));
}
return ERR_BUS_SUCCESS;
}
else
return ERR_BUS_SQLEXE;
}
break;
case ACTION_DELALL: //删除所有的记录
return ERR_BUS_MOTHEDNONE;
break;
case ACTION_QUERYID: //查询指定主键的记录
{
if(pOut !=NULL)
*pOut=NULL;
/* CoUninitialize();
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(FAILED(hr))
{
MessageBox(NULL,L"数据库接口初始化错误!",L"数据库错误",MB_OK);
return ERR_PROG_NOTOPEN;
}
*/ WCHAR wcWhere[300]=L"";
//检查输入参数
if(BusList[busindex].KeyIndex2 >=0)
{
if(pstrReqParam->nSize != sizeof(int)*2)
return ERR_BUS_PARAMSIZE;
//设置查询条件
swprintf(wcWhere,L"where %s = %d and %s = %d",(BusList[busindex].pBusFields + BusList[busindex].KeyIndex1)->NAME,
*((int *)pstrReqParam->pBuf),
(BusList[busindex].pBusFields + BusList[busindex].KeyIndex2)->NAME,
*((int *)pstrReqParam->pBuf+1)
);
}else
{
if(pstrReqParam->nSize != sizeof(int))
return ERR_BUS_PARAMSIZE;
//设置查询条件
swprintf(wcWhere,L"where %s = %d",(BusList[busindex].pBusFields + BusList[busindex].KeyIndex1)->NAME,
*((int *)pstrReqParam->pBuf)
);
}
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
int nID=g_DataBase.GetRows(BusList+busindex,wcWhere,pOut);
g_DataBase.CloseData();
if(BUSINESS_DEV==pstrReqParam->nBusID)
{//从内存中取状态值
RetResultStruct *pCur=*pOut;
unsigned short unVal;
while(pCur)
{
g_DevValueMap.Lookup(*((int*)((char *)pCur->pBuf +DEV_ADDR_POS)),unVal);
*(unsigned short *)((char *)pCur->pBuf +DEV_VALUE_POS)=unVal;
pCur=pCur->pNext;
}
}
return nID;
}
break;
case ACTION_QUERYGROUP: //查询指定父表ID(外键)的所有记录
{
if(pOut !=NULL)
*pOut=NULL;
/* CoUninitialize();
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(FAILED(hr))
{
MessageBox(NULL,L"数据库接口初始化错误!",L"数据库错误",MB_OK);
return ERR_PROG_NOTOPEN;
}
*/ WCHAR wcWhere[300]=L"";
if(BusList[busindex].FKeyIndex<0)
return ERR_BUS_FOREIGNKEY;
if(pstrReqParam->nSize != sizeof(int))
return ERR_BUS_PARAMSIZE;
//设置查询条件
swprintf(wcWhere,L"where %s = %d",(BusList[busindex].pBusFields + BusList[busindex].FKeyIndex)->NAME,
*((int *)pstrReqParam->pBuf)
);
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
int nID=g_DataBase.GetRows(BusList+busindex,wcWhere,pOut);
g_DataBase.CloseData();
if(BUSINESS_DEV==pstrReqParam->nBusID)
{//从内存中取状态值
RetResultStruct *pCur=*pOut;
unsigned short unVal;
while(pCur)
{
g_DevValueMap.Lookup(*((int*)((char *)pCur->pBuf +DEV_ADDR_POS)),unVal);
*(unsigned short *)((char *)pCur->pBuf +DEV_VALUE_POS)=unVal;
pCur=pCur->pNext;
}
}
return nID;
}
break;
case ACTION_QUERYALL: //查询所有记录
{
/* CoUninitialize();
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(FAILED(hr))
{
MessageBox(NULL,L"数据库接口初始化错误!",L"数据库错误",MB_OK);
return ERR_PROG_NOTOPEN;
}
*/
WCHAR cwWhere[100]=L"";
if(BUSINESS_ALARMSPRING ==pstrReqParam->nBusID )
{
wcscpy(cwWhere,L"order by time desc");
}else if(BUSINESS_ALARMNOTIFY ==pstrReqParam->nBusID)
{
wcscpy(cwWhere,L"order by Idx desc");
}else if(BUSINESS_PASSRECORD==pstrReqParam->nBusID)
{
wcscpy(cwWhere,L"order by time desc");
}else if(BUSINESS_TELVIDEORECORD==pstrReqParam->nBusID)
{
wcscpy(cwWhere,L"order by time desc");
}else if(BUSINESS_INTERFPHONERECORD==pstrReqParam->nBusID)
{
wcscpy(cwWhere,L"order by time desc");
}/*else if(BUSINESS_SHORTMSG==pstrReqParam->nBusID)
{
wcscpy(cwWhere,L"order by time desc");
}*/
if(pOut !=NULL)
*pOut=NULL;
if(!g_DataBase.OpenData())
{
return ERR_PROG_NOTOPEN;
}
int nID=g_DataBase.GetRows(BusList+busindex,cwWhere,pOut);
g_DataBase.CloseData();
if(BUSINESS_DEV==pstrReqParam->nBusID)
{//从内存中取状态值
RetResultStruct *pCur=*pOut;
unsigned short unVal;
while(pCur)
{
g_DevValueMap.Lookup(*((int*)((char *)pCur->pBuf +DEV_ADDR_POS)),unVal);
*(unsigned short *)((char *)pCur->pBuf +DEV_VALUE_POS)=unVal;
// swprintf(cwWhere,L"dwvid=%d,sys=%d,dev=%d,val=%d",*(int*)pCur->pBuf,*((unsigned short*)((char *)pCur->pBuf +DEV_ADDR_POS)),
// *((unsigned short*)((char *)pCur->pBuf +DEV_ADDR_POS+2)),unVal);
// writebuginfo(cwWhere);
pCur=pCur->pNext;
}
}
return nID;
}
break;
case ACTION_SUMFIELD: //统计指定字段的记录数,主要用于新增、修改的重名检查
{
WCHAR wcSql[300]=L"",cwTemp[100];
switch(pstrReqParam->nBusID)
{
case BUSINESS_DEV:// 设备表
{//参数:房间ID、设备ID、设备名称
if(pstrReqParam->nSize != (CC_DEVIE_NAME_LEN + sizeof(int)))//sizeof(SumParamDev))
{
return ERR_BUS_PARAMSIZE;
}
SumParamDev *pParamDev=(SumParamDev*)pstrReqParam->pBuf;
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,(char*)pParamDev->DevName,CC_DEVIE_NAME_LEN,cwTemp,100);
ReplaceYinhao(cwTemp);
//设置统计sql语句
swprintf(wcSql,L"select DevID from DevTable where HouseID = %d and Name='%s'",
pParamDev->nHouseID,cwTemp);
}
break;
case BUSINESS_SCENEDEV:// 场景设备表
{//参数:场景ID、设备ID
if(pstrReqParam->nSize != 2*sizeof(int))
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -