5.3、系统基本资料管理与维护
人员设置
长沙市国家税务局岳麓分局的每个职工都有所属的工作部门、工作职称、和相应的管理权限。在软件中可进行人员设置管理,其功能包括有新增职工、职工信息修改、职工权限设置和删除职工等职能。
(1)新增职工
首先由系统管理员录入职工的BNENO(员工编号)、BNNAM(姓名)、所属科室、职务代码和参加工作时间,单击“新增”按钮系统自动完成数据保存事务。其过程如下:
string ls_bdno,dwfilter
string ls_bneno
string ls_bnpwd
if dw_in.update() =1 then
commit;
//向密码表中增加新用户默认密码123
ls_bnpwd = "123"
ls_bneno = dw_in.getitemstring(1,"BNENO")
INSERT INTO htjs.kq_bpwd
( bneno,bnpwd)
VALUES ( :ls_bneno,:ls_bnpwd) ;
//刷新dw_list窗口
ls_bdno = dw_in.getitemstring(1,"BDNO")
if isnull(ls_bdno) then return
dwfilter = "BDNO = '"+ls_bdno+"'"
dw_list.setfilter(dwfilter)
dw_list.filter()
dw_list.retrieve()
//刷新dw_in窗口
dw_in.setredraw(false)
dw_in.reset()
dw_in.insertrow(0)
dw_in.setredraw(true)
//set focus
dw_in.setcolumn("BNENO")
dw_in.setfocus()
else
messagebox("错误","新增用户失败!",stopsign!)
rollback;
end if
其含义为:首先,窗口的数据输入文本框中取得相应数值,并直接保存数据窗口的新增数据行,新增用户成功后立即新增该用户的系统登录权限,并为其设置初始密码。最后刷新所有窗口数据窗口。如果用户输入有误不保存数据并给用户提示。
(2)职工权限设置
a、职工权限设置窗口(W_right)具有权限设置、修改两种功能,如果是第一次设置该用户权限,则由系统管理员对相应人员设置对应权限;如果己对该用户设置权限,窗口打开时自动读该职工己有的权限,可提供给系统管理员进行修改。这个判断过程由W_right的Open事件执行,其过程如下:
if gstr_para.bneno = "" then
messagebox("提示","请用鼠标单击右边列表中的用户行!")
close(w_right)
return
end if
//显示科室
dw_dev_select.settransobject(sqlca)
dw_dev_select.retrieve()
dw_dev.settransobject(sqlca)
dw_name.settransobject(sqlca)
if isnull(gstr_para.bneno) = false or len(gstr_para.bneno) > 0 then
dw_name.retrieve(gstr_para.bneno)
end if
//显示现有管理科所
dw_dev.retrieve(gstr_para.bneno)
//读权限
cbx_pg.checked = f_read_bman_pms(gstr_para.bneno,"cbx_pg")
cbx_gx_yj.checked = f_read_bman_pms(gstr_para.bneno,"cbx_gx_yj")
cbx_gx_sp.checked = f_read_bman_pms(gstr_para.bneno,"cbx_gx_sp")
cbx_fd_yj.checked = f_read_bman_pms(gstr_para.bneno,"cbx_fd_yj")
cbx_fd_sp.checked = f_read_bman_pms(gstr_para.bneno,"cbx_fd_sp")
cbx_jb_yj.checked = f_read_bman_pms(gstr_para.bneno,"cbx_jb_yj")
cbx_jb_sp.checked = f_read_bman_pms(gstr_para.bneno,"cbx_jb_sp")
cbx_qj_ky_half.checked= f_read_bman_pms(gstr_para.bneno,"cbx_qj_ky_half")
cbx_qj_ky_more_yj.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_ky_more_yj")
cbx_qj_ky_more_sp.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_ky_more_sp")
cbx_qj_kz_one_yj.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_kz_one_yj")
cbx_qj_kz_one_sp.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_kz_one_sp")
cbx_qj_kz_more_yj.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_kz_more_yj")
cbx_qj_kz_more_sp.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_kz_more_sp")
cbx_xx_sp.checked= f_read_bman_pms(gstr_para.bneno,"cbx_xx_sp")
其含义为:首先,显示数据窗口内的所有内容,然后从登录时保存的全局函数据中读取用的相应权限,在窗口中的各种权限设计为“复选框”选择,复选框有选中与未选中两种状态。从全局函数中读出相应的项目来影响复选项的“Checked”属性。
b、设置职工权限
由系统管理员根据实际情况确定系统职工的所辖科室、科员请假、科长请假、派工、加班等相应权限。所辖科室从下拉列表框中进行选择,其余权限通过复选框进行选择,选择好权限后单击“确定存盘”系统自动判断数据自动性并进行保存,保存结果反馈给用户提示。其保存过程如下:
if dw_dev.rowcount() <= 0 then
messagebox("提示","选择所管辖的科所!",exclamation!)
return
end if
if messagebox("提示","确认无误保存吗?",question!,okcancel!) = 1 then
if dw_dev.update() = 1 then
commit;
//写权限
f_write_bman_pms(gstr_para.bneno,"cbx_pg",cbx_pg.checked)
f_write_bman_pms(gstr_para.bneno,"cbx_gx_yj",cbx_gx_yj.checked)
f_write_bman_pms(gstr_para.bneno,"cbx_gx_sp",cbx_gx_sp.checked)
f_write_bman_pms(gstr_para.bneno,"cbx_fd_yj",cbx_fd_yj.checked )
f_write_bman_pms(gstr_para.bneno,"cbx_fd_sp",cbx_fd_sp.checked)
f_write_bman_pms(gstr_para.bneno,"cbx_jb_yj",cbx_jb_yj.checked)
f_write_bman_pms(gstr_para.bneno,"cbx_jb_sp",cbx_jb_sp.checked)
f_write_bman_pms(gstr_para.bneno,"cbx_qj_ky_half",cbx_qj_ky_half.checked)
f_write_bman_pms(gstr_para.bneno,"cbx_qj_ky_more_yj",cbx_qj_ky_more_yj.checked) f_write_bman_pms(gstr_para.bneno,"cbx_qj_ky_more_sp",cbx_qj_ky_more_sp.checked) f_write_bman_pms(gstr_para.bneno,"cbx_qj_kz_one_yj",cbx_qj_kz_one_yj.checked) f_write_bman_pms(gstr_para.bneno,"cbx_qj_kz_one_sp",cbx_qj_kz_one_sp.checked)
f_write_bman_pms(gstr_para.bneno,"cbx_qj_kz_more_yj",cbx_qj_kz_more_yj.checked) f_write_bman_pms(gstr_para.bneno,"cbx_qj_kz_more_sp",cbx_qj_kz_more_sp.checked)
f_write_bman_pms(gstr_para.bneno,"cbx_xx_sp",cbx_xx_sp.checked)
messagebox("提示","成功保存权限!")
dw_dev.reset()
close(parent)
else
rollback;
messagebox("错误","保存所属科所失败?",stopsign!)
end if
end if
其含义为:首先,判断窗口中各项内容是否输入完整,数据完整无误后直接保存数据窗口中的内容,并将权限内容保存到全局函数中。最后反馈给用户保存提示。
b、保存申请单内容
用户填写完相应项目后,单击“保存”按钮系统将用户数据保存到数据库中。其处理过程如下:
long ll_cur_row
string ls_qjno
datetime ldt1
time lt1
if dw_1.rowcount() <=0 then return
if dw_1.update() = 1 then
commit;
messagebox("提示","成功提交!")
else
rollback;
messagebox("错误","保存请假单失败!",stopsign!)
return
end if
dw_1.setredraw(false)
dw_1.reset()
ll_cur_row = dw_1.insertrow(0)
dw_1.setredraw(true)
////初始化/////
lt1 = now()
ldt1 = datetime(date(gs_today),lt1)
ls_qjno = f_qj_no(gs_id)
//请假单号
dw_1.setitem(ll_cur_row,"QJNO",ls_qjno)
//用户NO
dw_1.setitem(ll_cur_row,"BNENO",gs_id)
//用户姓名
dw_1.setitem(ll_cur_row,"BNNAM",gs_bnnam)
//科所no
dw_1.setitem(ll_cur_row,"BDNO",gs_bdno)
//科所名称
dw_1.setitem(ll_cur_row,"BDNAM",gs_bdnam)
//日期
dw_1.setitem(ll_cur_row,"QJDAT",ldt1)
dw_1.setitem(ll_cur_row,"QJTIME",ldt1)
dw_1.setitem(ll_cur_row,"QJTIME1",ldt1)
//查找个人序号xh
dw_1.setitem(ll_cur_row,"xh",gstr_pa.qj_xh)
其含义为:首先,设置提交数据窗口的数据保存事务,并反馈用户保存结果。然后重新初始化数据窗口,以恢复初始值。
c、签署意见和审批
主管局长、政工局长等管理人员都需要对申请请假的单据进行签署意见和审批,在系统设计中首先单击“查询”按钮由数据窗口查询得到所有待审批的单据,再交由管理人员人审核,对审核通过的可以进行输入数据签名密码,其保存处理过程如下:
long ll_count
int i
string ls_bz2
if sle_sig.text <> f_signature(gs_id) then
messagebox("错误","签名密码错误!",stopsign!)
return
end if
//请假代码 2、3、5
ll_count = tab_1.tabpage_1.dw_1.rowcount()
//查询标志0未1同意2不同意
for i = 1 to ll_count
ls_bz2 = tab_1.tabpage_1.dw_1.getitemstring(i,"BZ2")
if ls_bz2 = "1" or ls_bz2 = "2" then
tab_1.tabpage_1.dw_1.setitem(i,"BNENO2",gs_id)
tab_1.tabpage_1.dw_1.setitem(i,"BNNAM2",gs_bnnam)
end if
next
//请假代码 1
ll_count = tab_1.tabpage_2.dw_2.rowcount()
//查询标志0未1同意2不同意
for i = 1 to ll_count
ls_bz2 = tab_1.tabpage_2.dw_2.getitemstring(i,"BZ2")
if ls_bz2 = "1" or ls_bz2 = "2" then
tab_1.tabpage_2.dw_2.setitem(i,"BNENO2",gs_id)
tab_1.tabpage_2.dw_2.setitem(i,"BNNAM2",gs_bnnam)
end if
next
//请假代码 6
ll_count = tab_1.tabpage_3.dw_3.rowcount()
//查询标志0未1同意2不同意
for i = 1 to ll_count
ls_bz2 = tab_1.tabpage_3.dw_3.getitemstring(i,"BZ2")
if ls_bz2 = "1" or ls_bz2 = "2" then
tab_1.tabpage_3.dw_3.setitem(i,"BNENO2",gs_id)
tab_1.tabpage_3.dw_3.setitem(i,"BNNAM2",gs_bnnam)
end if
next
//请假代码 7
ll_count = tab_1.tabpage_4.dw_4.rowcount()
//查询标志0未1同意2不同意
for i = 1 to ll_count
ls_bz2 = tab_1.tabpage_4.dw_4.getitemstring(i,"BZ2")
if ls_bz2 = "1" or ls_bz2 = "2" then
tab_1.tabpage_4.dw_4.setitem(i,"BNENO2",gs_id)
tab_1.tabpage_4.dw_4.setitem(i,"BNNAM2",gs_bnnam)
end if
next
if messagebox("提示","确认要保存吗?",question!,okcancel!) = 1 then
if tab_1.tabpage_1.dw_1.update() = 1 then
commit;
tab_1.tabpage_1.dw_1.reset()
else
rollback;
messagebox("错误","保存科员请假审批结果失败!",stopsign!)
end if
if tab_1.tabpage_2.dw_2.update() = 1 then
commit;
tab_1.tabpage_2.dw_2.reset()
else
rollback;
messagebox("错误","保存在职学习审批结果失败!",stopsign!)
end if
if tab_1.tabpage_3.dw_3.update() = 1 then
commit;
tab_1.tabpage_3.dw_3.reset()
else
rollback;
messagebox("错误","保存科所长请假一天审批结果失败!",stopsign!)
end if
if tab_1.tabpage_4.dw_4.update() = 1 then
commit;
tab_1.tabpage_4.dw_4.reset()
else
rollback;
messagebox("错误","保存科所长请假一天以上审批结果失败!",stopsign!)
end if
end if
其含义为:首先,校验数据签名的密码是否正确。然后查询审批意见,针对不同的审批结果,得到请假结果,最后保存数据窗口数据,反馈用户保存结果。
5.5、统计查询
系统所有的查询菜单都能针对时间段进行统计查询,部分选项还能分类查询。首先由用户输入查询的时间段,选择分类项目查询,单击查询按钮系统会根据查询条件对数据窗口进行检索。其派工查询处理过程如下:
//1.局长 2.政工局长 3.主管局长 4.科所长 5.科员
string dwfilter
datetime dt1,dt2
time lt1,lt2
lt1 = time("00:00:00")
lt2 = time("23:59:59")
dt1 = datetime(date(em_1.text),lt1)
dt2 = datetime(date(em_2.text),lt2)
//设置查询的时间条件
if isdate(em_1.text) = true and isdate(em_2.text) = true and em_1.text <= em_2.text then
//按时间段
choose case true
case gs_ruler = "4" or gs_ruler = "5"
dw_1.setredraw(false)
dw_1.dataobject = "d_pg_cx"
dw_1.setredraw(true)
dw_1.settransobject(sqlca)
dwfilter = "BDNO='"+gs_bdno+"'"
dw_1.setfilter(dwfilter)
dw_1.filter()
dw_1.retrieve(dt1,dt2)
case gs_ruler = "3"
dw_1.setredraw(false)
dw_1.dataobject = "d_pg_cx_fjz"
dw_1.settransobject(sqlca)
dw_1.setredraw(true)
dw_1.retrieve(dt1,dt2,gs_id)
case gs_ruler = "1" or gs_ruler = "2"
dw_1.setredraw(false)
dw_1.dataobject = "d_pg_cx"
dw_1.setredraw(true)
dw_1.settransobject(sqlca)
dw_1.retrieve(dt1,dt2)
end choose
else
messagebox("错误","输入查询的起止时间!~r"+"或截止时间大于起始时间!",exclamation!)
end if
其含义为:首先,取得用户输入的时间段查询条件。然后通过数据窗口检索数据库中是否有符合条件的数据,如果有就按用户职称分类进行显示,以供用户参考。