📄 employeemanageunit.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "EmployeeManageUnit.h"
#include "EmployeeInputUnit.h"
#include "EmployeeFlagUnit.h"
#include "DeviceManageUnit.h"
#include "DeviceInfoInputUnit.h"
#include "DeptManageUnit.h"
#include "SetRoleUnit.h"
#include <ComObj.hpp> //EXCEL导出
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "EmployeeViewUnit"
#pragma resource "*.dfm"
TEmployeeManageFrm *EmployeeManageFrm;
//---------------------------------------------------------------------------
__fastcall TEmployeeManageFrm::TEmployeeManageFrm(TComponent* Owner)
: TEmployeeViewFrm(Owner)
{
}
//---------------------------------------------------------------------------
void TEmployeeManageFrm::ViewEmployeeInfo()
{
TListItem *pItem = lvRecordInfo->Selected;
if(!pItem)
{
pItem = lvDeviceUser->Selected;
if(!pItem)
return;
}
//:查看员工信息
if(pItem->Caption.IsEmpty())
return;
int lEmpID = pItem->Caption.ToInt();
ViewEmpInfo(lEmpID);
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::lvRecordInfoDblClick(TObject *Sender)
{
ViewEmployeeInfo();
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::cbAllSelectClick(TObject *Sender)
{
if(cbAllSelect->Checked)
{
for(int i=0;i<lvRecordInfo->Items->Count;i++)
{
lvRecordInfo->Items->Item[i]->Checked = true;
}
}
else
{
for(int i=0;i<lvRecordInfo->Items->Count;i++)
{
lvRecordInfo->Items->Item[i]->Checked = false;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::DownTimerTimer(TObject *Sender)
{
int lSelectCount = GetSelectedCount();
if(nNum >= lvRecordInfo->Items->Count)
{
DownTimer->Enabled = false;
spbnCancel->Enabled = true;
bDownTemplate = false;
pEngine->ReleaseDeviceHandle(nDeviceID,nHandle);
return;
}
if(!lvRecordInfo->Items->Item[nNum]->Checked)
{
nNum++;
return;
}
int lRet,lHandle,lUserID;
UserInfoEx_T lUserInfoEx;
lUserID = Trim(lvRecordInfo->Items->Item[nNum]->Caption).ToInt();
if(!bDownTemplate)//员工下载完后再下载员工指纹数据
{
pDBAccess->GetUserInfo(lUserID,lUserInfoEx);
if(lUserInfoEx.BaseUserInfo.IsUsePwd != upUse)//不启用密码所以不下载密码
strcpy(lUserInfoEx.BaseUserInfo.EmpPwd,"-1");
lRet = pTDeviceAccess->SetUserInfo(nHandle,lUserInfoEx.BaseUserInfo);
if(lRet == 12)
{
sbInfo->Panels->Items[3]->Text = "设备存储空间已经满了!";
DownTimer->Enabled = false;
spbnCancel->Enabled = true;
bDownTemplate = false;
//if(nOpenFlag != dsRightStatus)
// pTDeviceAccess->CloseDevice(nHandle);
pEngine->ReleaseDeviceHandle(nDeviceID,nHandle);
return;
}
if(lRet == 11)//这个员工已经存在
{
//AnsiString lEmp = "您确定要覆盖编号是";//定时器不能询问,会跳出很多框
//lEmp = lEmp + AnsiString(lUserID);
//lEmp = lEmp + "的员工信息吗?";
//if(Application->MessageBoxA(lEmp.c_str(),"提示信息",MB_YESNO + MB_ICONQUESTION) == ID_YES)
//{
lRet = pTDeviceAccess->DeleteUser(nHandle,lUserInfoEx.BaseUserInfo.UserID);
if(lRet == 0)
lRet = pTDeviceAccess->SetUserInfo(nHandle,lUserInfoEx.BaseUserInfo);
//}
}
if(lRet != 0 && lRet != 11)
{
sbInfo->Panels->Items[3]->Text = "下载员工信息失败!";
//ShowMessage(lRet);
//if(nOpenFlag != dsRightStatus)
// pTDeviceAccess->CloseDevice(nHandle);
DownTimer->Enabled = false;
spbnCancel->Enabled = true;
bDownTemplate = false;
pEngine->ReleaseDeviceHandle(nDeviceID,nHandle);
return;
}
}
if(bDownTemplate)
{
//下载员工指纹数据
TemplateInfoArray_T lTemplateInfoList;
IterTemplateInfo_T IterTemplate;
pDBAccess->GetTemplateInfoList(lUserID,lTemplateInfoList);
for(IterTemplate = lTemplateInfoList.begin();IterTemplate!=lTemplateInfoList.end();++IterTemplate)
{
TemplateInfo_T aTemplateInfo = *IterTemplate;
lRet = pTDeviceAccess->DownTemplate(nHandle,lUserID,aTemplateInfo.FingerTemplate,256);
if(lRet != 0)
{
sbInfo->Panels->Items[3]->Text = "下载员工指纹数据失败!";
//ShowMessage(lRet);
bDownTemplate = false;
DownTimer->Enabled = false;
spbnCancel->Enabled = true;
pEngine->ReleaseDeviceHandle(nDeviceID,nHandle);
return;
}
}
lTemplateInfoList.clear();
}
nNum++;
nSelNum++;
AnsiString lProgress;
if(!bDownTemplate)
lProgress = "正在下载员工信息,请稍候...... 进度: ";
else
lProgress = "正在下载员工指纹数据,请稍候...... 进度: ";
lProgress = lProgress + AnsiString(nSelNum*(10000/lSelectCount)/100) + "%";
sbInfo->Panels->Items[3]->Text = lProgress;
if(!bDownTemplate && nSelNum == lSelectCount)
{
nNum = 0;
nSelNum = 0;
bDownTemplate = true;
}
if(bDownTemplate && nSelNum == lSelectCount)
{
pEngine->ReleaseDeviceHandle(nDeviceID,nHandle);
DownTimer->Enabled = false;
spbnCancel->Enabled = true;
bDownTemplate = false;
sbInfo->Panels->Items[3]->Text = "下载员工信息完成! 进度: 100%";
Application->MessageBoxA("下载员工信息完成!","提示信息",MB_OK + MB_ICONINFORMATION);
sbInfo->Panels->Items[3]->Text = "";
return;
}
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::UpTimerTimer(TObject *Sender)
{
int lRet;
UserInfo_T lUserInfo;
if(nNum < nUserMax)//员工上传完后再上传员工指纹数据
{
lRet = pTDeviceAccess->GetUserInfo(nHandle,nNum,lUserInfo);
if(lRet != 0)
{
sbInfo->Panels->Items[3]->Text = "上传员工信息失败!";
UpTimer->Enabled = false;
spbnCancel->Enabled = false;
pEngine->ReleaseDeviceHandle(nDeviceID,nHandle);
return;
}
pDBAccess->InsertUserInfo_T(lUserInfo);
TListItem *pItem;
pItem = lvDeviceUser->Items->Add();
pItem->Caption = lUserInfo.UserID;
pItem->SubItems->Add(lUserInfo.EmpName);
AnsiString lDeptName = pDBAccess->GetDeptName(lUserInfo.DeptID);
if(!pDBAccess->IsDeptIDExist(lUserInfo.DeptID))
{
DeptInfo_T lFixedDeptInfo;
pDBAccess->GetFixedDeptID(&lFixedDeptInfo);
lDeptName = lFixedDeptInfo.DeptName; //"未分配部门";
}
pItem->SubItems->Add(lDeptName);
if(lUserInfo.ManageClass == utUser)
pItem->SubItems->Add("普通员工");
else if(lUserInfo.ManageClass == utManage)
pItem->SubItems->Add("管理员");
else
pItem->SubItems->Add("未知");
pItem->SubItems->Add(aCnv.GetRoleString(lUserInfo.AttendPlan));
if(lUserInfo.VerifyMode == vmPassword)
pItem->SubItems->Add("密码验证");
else if(lUserInfo.VerifyMode == vmFinger)
pItem->SubItems->Add("指纹验证");
else
pItem->SubItems->Add("未知");
pItem->SubItems->Add("");
AnsiString lEmpPwd = lUserInfo.EmpPwd;
if(lEmpPwd == "-1")
pItem->SubItems->Add("否");
else
pItem->SubItems->Add("是");
pItem->SubItems->Add("在职");
}
if(nNum >= nUserMax && nNum < nUserMax+nTemplateMax)
{
int lTemplateLen;
TemplateInfo_T lTemplateInfo;
lRet = pTDeviceAccess->UpTemplate(nHandle,nNum - nUserMax,lTemplateInfo.EmpID,lTemplateInfo.FingerTemplate,lTemplateLen);
if(lRet != 0)
{
sbInfo->Panels->Items[3]->Text = "上传员工指纹数据失败!";
UpTimer->Enabled = false;
spbnCancel->Enabled = false;
pEngine->ReleaseDeviceHandle(nDeviceID,nHandle);
return;
}
pDBAccess->InsertTemplateInfo_T(lTemplateInfo);
}
nNum++;
AnsiString lProgress;
if(nNum <= nUserMax)
{
lProgress = "正在上传员工信息,请稍候...... 进度: ";
lProgress = lProgress + AnsiString(nNum*(10000/nUserMax)/100) + "%";
}
else
{
lProgress = "正在上传员工指纹数据,请稍候...... 进度: ";
lProgress = lProgress + AnsiString((nNum-nUserMax)*(10000/nTemplateMax)/100) + "%";
}
sbInfo->Panels->Items[3]->Text = lProgress;
if(nNum >= nUserMax + nTemplateMax)
{
UpTimer->Enabled = false;
spbnCancel->Enabled = false;
//修改指纹数
int lUserID,lCount;
for(int i=0;i<lvDeviceUser->Items->Count;i++)
{
lUserID = lvDeviceUser->Items->Item[i]->Caption.ToInt();
lCount = pDBAccess->GetTemplateCount_T(lUserID);
lvDeviceUser->Items->Item[i]->SubItems->Strings[5] = AnsiString(lCount);
pDBAccess->UpdateTemplateCount_T(lUserID,lCount);
}
sbInfo->Panels->Items[3]->Text = "上传员工信息完成! 进度: 100%";
Application->MessageBoxA("上传员工信息完成!","提示信息",MB_OK + MB_ICONINFORMATION);
sbInfo->Panels->Items[3]->Text = "";
AnsiString lText = "设备员工信息记录条数:";
sbInfo->Panels->Items[2]->Text = lText + AnsiString(lvDeviceUser->Items->Count) + "条";
pEngine->ReleaseDeviceHandle(nDeviceID,nHandle);
return;
}
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::FormShow(TObject *Sender)
{
TEmployeeViewFrm::FormShow(Sender);
trDevice->FullExpand();//树展开
spbnCancel->Enabled = false;
}
//---------------------------------------------------------------------------
int TEmployeeManageFrm::GetSelectedCount()
{
int lCount = 0;
for(int i=0;i<lvRecordInfo->Items->Count;i++)
{
if(lvRecordInfo->Items->Item[i]->Checked)
lCount++;
}
return lCount;
}
//---------------------------------------------------------------------------
int TEmployeeManageFrm::GetSaveSelectedCount()
{
int lCount = 0;
for(int i=0;i<lvDeviceUser->Items->Count;i++)
{
if(lvDeviceUser->Items->Item[i]->Checked)
lCount++;
}
return lCount;
}
//---------------------------------------------------------------------------
void __fastcall TEmployeeManageFrm::FormCreate(TObject *Sender)
{
TEmployeeViewFrm::FormCreate(Sender);//重载后继承父类事件功能
lvRecordInfo->OnColumnClick = OnRecordInfoColumnClick;
lvRecordInfo->OnCompare = OnRecordInfoCompare;
lvDeviceUser->OnColumnClick = OnRecordInfoColumnClick;
lvDeviceUser->OnCompare = OnRecordInfoCompare;
ClearSpeedButtonCaption();
pTDeviceAccess = GetDeviceAccessInstance();
//初始化设备树列表
TTreeNode* pRootNode = trDevice->TopItem;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -