📄 employeemanageunit.cpp
字号:
DeviceInfoArray_T aDeviceList;
pDBAccess->GetDeviceList(aDeviceList);
IterDeviceInfo_T IterDevice;
DeviceInfo_T aDeviceInfo;
for(IterDevice = aDeviceList.begin();IterDevice != aDeviceList.end();++IterDevice)
{
aDeviceInfo = *IterDevice;
if (aDeviceInfo.DeviceStatus == dsRightStatus) //只显示被启用的设备
{
TTreeNode* lNewNode = trDevice->Items->AddChild(pRootNode,aDeviceInfo.DeviceName);
lNewNode->StateIndex = aDeviceInfo.DeviceID;
lNewNode->ImageIndex = 2;
lNewNode->SelectedIndex = 3;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::FormDestroy(TObject *Sender)
{
TEmployeeViewFrm::FormDestroy(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::sbSaveClick(TObject *Sender)
{
int lSelectCount = GetSaveSelectedCount();
if(lSelectCount <= 0)
{
Application->MessageBoxA("请选择要保存的员工!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
int i,j,k,lCaption,lTemplateCount;
for(i=0;i<lvDeviceUser->Items->Count;i++)
{
if(!lvDeviceUser->Items->Item[i]->Checked)
continue;
lCaption = Trim(lvDeviceUser->Items->Item[i]->Caption).ToInt();
lTemplateCount = pDBAccess->GetTemplateCount(lCaption);
if(lTemplateCount > 0)
pDBAccess->DeleteTemplateOneUser(lCaption);//先删光该员工所有指纹数据
}
AnsiString lDBTemplate;
UserInfoEx_T lUserInfoEx;
TemplateInfoArray_T lTemplateInfoList;
IterTemplateInfo_T IterTemplate;
int lRet;
for(i=0;i<lvDeviceUser->Items->Count;i++)
{
if(!lvDeviceUser->Items->Item[i]->Checked)
continue;
lCaption = Trim(lvDeviceUser->Items->Item[i]->Caption).ToInt();
//从临时表读取员工信息
pDBAccess->GetUserInfo_T(lCaption,lUserInfoEx.BaseUserInfo);
pDBAccess->GetTemplateInfoList_T(lCaption,lTemplateInfoList);
//保存员工信息
if(pDBAccess->IsUserIDExist(lCaption))
pDBAccess->UpdateUserInfo(lCaption,lUserInfoEx.BaseUserInfo);
else
pDBAccess->InsertUserInfo(lUserInfoEx.BaseUserInfo);
//保存员工指纹数据信息
for(IterTemplate = lTemplateInfoList.begin();IterTemplate!=lTemplateInfoList.end();++IterTemplate)
{
TemplateInfo_T aTemplateInfo = *IterTemplate;
if(pDBAccess->InsertTemplateInfo(aTemplateInfo) == DBAccess_E)
{
Application->MessageBoxA("保存指纹数据失败!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
}
}
Application->MessageBoxA("保存员工完成!","提示信息",MB_OK + MB_ICONINFORMATION);//*/
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::cbDBSelectClick(TObject *Sender)
{
if(cbDBSelect->Checked)
{
for(int i=0;i<lvDeviceUser->Items->Count;i++)
{
lvDeviceUser->Items->Item[i]->Checked = true;
}
}
else
{
for(int i=0;i<lvDeviceUser->Items->Count;i++)
{
lvDeviceUser->Items->Item[i]->Checked = false;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::aAddEmpExecute(TObject *Sender)
{
if (CurDeptID == 0)
{
Application->MessageBoxA("请选择新增员工所属部门!","提示信息",MB_OK + MB_ICONWARNING);
return;
}
TEmployeeInfoFrm* pEmployeeInfoFrm = new TEmployeeInfoFrm(this);
DeptInfo_T aDeptInfo;
pEmployeeInfoFrm->SetCaption("员工管理->","新增员工");
pDBAccess->GetDeptInfo(CurDeptID,&aDeptInfo);
pEmployeeInfoFrm->SetOperateMode(omAdd);
pEmployeeInfoFrm->SetDeptInfo(aDeptInfo);
pEmployeeInfoFrm->ShowModal();
UserInfoEx_T aUserInfo;
bool lOK = pEmployeeInfoFrm->GetUserInfo(aUserInfo);
if (lOK)
{
int lRV = pDBAccess->InsertUserInfo(aUserInfo.BaseUserInfo);
if (lRV == OK)
{
AnsiString lMsg;
lMsg = "在数据库新增员工:" + AnsiString(aUserInfo.BaseUserInfo.EmpName) + " 成功!";
Application->MessageBoxA(lMsg.c_str(),"提示信息",MB_OK + MB_ICONINFORMATION);
RefreshListView();
}
else
{
Application->MessageBoxA("新增新员工失败!","提示信息",MB_OK + MB_ICONERROR);
}
}
delete pEmployeeInfoFrm;
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::aEditEmpExecute(TObject *Sender)
{
//:修改员工信息
TListItem *pItem = lvRecordInfo->Selected;
if(!pItem)
{
Application->MessageBoxA("请选择要修改的数据库员工记录!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
int lRV;
if (!pItem->Caption.IsEmpty())
{
int lEmpID = pItem->Caption.ToInt();
UserInfoEx_T aUserInfo;
lRV = pDBAccess->GetUserInfo(lEmpID,aUserInfo);
if (lRV == OK)
{
TEmployeeInfoFrm* pEmployeeInfoFrm = new TEmployeeInfoFrm(this);
pEmployeeInfoFrm->SetCaption("员工管理->","修改员工信息");
pEmployeeInfoFrm->SetOperateMode(omEdit);
pEmployeeInfoFrm->SetUserInfo(aUserInfo);
pEmployeeInfoFrm->ShowModal();
bool lOK = pEmployeeInfoFrm->GetUserInfo(aUserInfo);
if (lOK)
{
lRV = pDBAccess->UpdateUserInfo(aUserInfo.BaseUserInfo.UserID,aUserInfo.BaseUserInfo);
if (lRV == OK)
{
AnsiString lMsg;
lMsg = "修改数据库员工:" + AnsiString(aUserInfo.BaseUserInfo.EmpName) + " 成功!";
Application->MessageBoxA(lMsg.c_str(),"提示信息",MB_OK + MB_ICONINFORMATION);
RefreshListView();
}
else
{
Application->MessageBoxA("修改员工信息失败!","提示信息",MB_OK + MB_ICONERROR);
}
}
delete pEmployeeInfoFrm;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::aDeleteEmpExecute(TObject *Sender)
{
int lSelectCount = GetSelectedCount();
if(lSelectCount <= 0)
{
Application->MessageBoxA("请选择要删除的员工记录!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
AnsiString lMsg = "您确认要删除选中的员工记录吗?";
if(Application->MessageBoxA(lMsg.c_str(),"提示信息",MB_YESNO + MB_ICONQUESTION)==ID_NO)//ID_YES正确
return;
int lEmpID;
for(int i=0;i<lvRecordInfo->Items->Count;i++)
{
if(lvRecordInfo->Items->Item[i]->Checked)
{
lEmpID = lvRecordInfo->Items->Item[i]->Caption.Trim().ToInt();
if(pDBAccess->DeleteUserInfo(lEmpID) != OK)
{
Application->MessageBoxA("删除员工失败!","提示信息",MB_OK + MB_ICONERROR);
return;
}
}
}
RefreshListView();
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::aCloseExecute(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::trDeviceClick(TObject *Sender)
{
edtCurDeviceName->Text = trDevice->Selected->Text;
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::aClearDeviceEmpInfoExecute(TObject *Sender)
{
int lRV;
TTreeNode* lCurNode = trDevice->Selected;
if(lCurNode == NULL || lCurNode == trDevice->Items->Item[0])
{
Application->MessageBoxA("请选择要清空的设备!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
if(Application->MessageBoxA("您确认要清空设备数据吗?","提示信息",MB_YESNO + MB_ICONQUESTION) == ID_NO)
return;
int lDeviceID = lCurNode->StateIndex;
DeviceInfo_T aDeviceInfo;
TEventEngine *pTEventEngine = GetEventEngineInstance();
pTEventEngine->GetDeviceInfo(lDeviceID,&aDeviceInfo); //得到当前设备信息里的状态,是否在用
nHandle = pTEventEngine->GetDeviceHandle(lDeviceID);
if(nHandle == 0)
{
Application->MessageBoxA("打开要清空的设备失败!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
lRV = pTDeviceAccess->ClearUser(nHandle);
pTEventEngine->ReleaseDeviceHandle(lDeviceID,nHandle);
if(lRV != OK)
{
Application->MessageBoxA("清空设备数据失败!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
Application->MessageBoxA("设备数据已经清空!","提示信息",MB_OK + MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::aClearDBEmpInfoExecute(TObject *Sender)
{
if(Application->MessageBoxA("您确认要清空员工信息吗?","提示信息",MB_YESNO + MB_ICONQUESTION) == ID_NO)
return;
int lRV;
lRV = pDBAccess->ClearUserInfo();
if(lRV != OK)
{
Application->MessageBoxA("清空员工信息失败!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
lRV = pDBAccess->ClearTemplateInfo();
if(lRV != OK)
{
Application->MessageBoxA("清空员工指纹数据失败!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
RefreshListView();
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::spbnCancelClick(TObject *Sender)
{
lvDeviceUser->Items->Clear();
pDBAccess->ClearUserInfo_T();
pDBAccess->ClearTemplateInfo_T();
UpTimer->Enabled = false;
spbnCancel->Enabled = false;
pEngine->ReleaseDeviceHandle(nDeviceID,nHandle);
sbInfo->Panels->Items[3]->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::tvDeptClick(TObject *Sender)
{
TEmployeeViewFrm::tvDeptClick(Sender);
TTreeNode* lCurNode = tvDept->Selected;
AnsiString lText = "当前部门:";
sbInfo->Panels->Items[0]->Text = lText + lCurNode->Text;
lText = "数据库员工信息记录条数:";
sbInfo->Panels->Items[1]->Text = lText + AnsiString(lvRecordInfo->Items->Count) + "条";
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::aViewDeviceExecute(TObject *Sender)
{
//查看设备信息
TTreeNode* lCurNode = trDevice->Selected;
if(lCurNode == NULL || lCurNode == trDevice->Items->Item[0])
{
Application->MessageBoxA("请选择要查看的设备!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
int lDeviceID = lCurNode->StateIndex;
if (lDeviceID != 0)
{
DeviceInfo_T aDeviceInfo;
if (pDBAccess->GetDeviceInfo(lDeviceID,aDeviceInfo) == OK)
{
TDeviceInfoInputFrm* pDeviceInfoInputFrm = new TDeviceInfoInputFrm(this);
pDeviceInfoInputFrm->SetOperateMode(omView);
pDeviceInfoInputFrm->SetCaption("员工管理->","查看设备信息");
pDeviceInfoInputFrm->SetDeviceInfo(aDeviceInfo);
pDeviceInfoInputFrm->ShowModal();
delete pDeviceInfoInputFrm;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::aSetDeptExecute(TObject *Sender)
{
int lSelectCount = GetSelectedCount();
if(lSelectCount <= 0)
{
Application->MessageBoxA("请选择要批量设置的员工记录!","提示信息",MB_OK + MB_ICONINFORMATION);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -