中控奥康考勤机接口使用说明书Word文档格式.docx
《中控奥康考勤机接口使用说明书Word文档格式.docx》由会员分享,可在线阅读,更多相关《中控奥康考勤机接口使用说明书Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
viii.zkemkeeper.dll
ix.zkemsdk.dll
x.regZkemkeeper.batsdk注册文件
b)absLib.dll程序库文件
c)employee.sql人员列表SQL暂存文件
d)Interop.zkemkeeper.dllsdk引用文件
e)mas86.dll程序库文件
f)masZkFpSvc.exe主程序文件(控制服务及接收服务)
g)masZkFpSvc.exe.config主程序配置文件
h)srvInstall.bat主程序注册为NT服务命令文件
i)srvUnInstall.bat删除NT注册命令文件
二、安装说明
1、在SQL查询分析器中执行两个需要升级以及支持系统运行的SQL脚本文件。
2、将“MAS接口文件”目录复制到MAS系统的App_Data目录下覆盖,以便在这个目录里添加接口文件。
3、将“控制服务程序文件”目录复制到服务器的“C:
\ProgramFiles”目录下新建一个“”子目录,完成后目录全称如下:
C:
\ProgramFiles\\masZkFpSvc
4、注:
如果服务器是64位系统则在:
5、C:
\ProgramFiles(x86)\\masZkFpSvc目录下。
6、进入到masZkFpSvc目录下,以管理员身份运行其中的:
regZkemkeeper.bat文件,以便注册SDK的API。
7、进入到masZkFpSvc目录,以管理员身份运行其中的:
srvInstall.bat文件,将程序注册为NT服务。
三、设置说明
1、中控考勤机接口程序有两种工作模式,一是界面模式,二是服务模式。
界面模式主要针对管理员使用,用于登记考勤机,对考勤机各项操作进行调试,以及对大批量的考勤机进行初始化操作等。
2、进入masZkFpSvc目录,双击运行masZkFpSvc.exe程序文件,如下图:
3、先转到“设置”页进行MAS服务地址等设置,如下图:
MAS服务地址是访问MAS系统的地址,地址后面的文件指向部分是一样的(“/common/DataProvider.asmx”),不用改,前面的地址根据实际安装的位置进行更改。
地址在安装本程序的在IE中必须能访问,访问画面如下:
改好后点保存,并关闭程序,重新打开后,可以点“测试连接”按钮进行测试,如果返回版本信息,恭喜了,说明设置成功了。
4、回到第一个画面“设备登录&
初始化”页面。
该界面主要是进行考勤机的登记测试和初始化工作。
比如对考勤机进行联机测试,数据初始化等的处理。
连接好考勤机后就可以进行联机测试了,选择左边的考勤机列表,可以点住鼠标拖拉多选,也可以按住[Ctrl]或[Shift]后点鼠标多选,然后点联机测试如下图:
本页面只是登记考勤机以及对考勤机进行批量初始化操作所用。
本页面的所有功能都在按钮上写着了。
5、转到设备到数据库操作页面——
该页面有“读取刷卡记录”和“读取指纹记录”两功能,这个功能都是从左边选定的考勤机中直接读取数据。
读到数据后可以执行,“保存数据到服务器”操作,该操作中刷卡记录的保存,系统调用了MAS接口中的“empCheckFinger.sql”这个脚本进行处理,且当一台考勤机记录处理结束后将调用“svrSubsequent.sql”脚本进行后续处理;
而保存指纹记录时则调用了“setEmpFinger.sql”脚本来处理。
(注:
上述,以及后面文档中所说到的接口脚本,均指本文档第一部分“程序文件”的第2条“MAS接口文件”中所提到的,存在于MAS系统的“App_Data\Interface\zk.fp”目录下接口脚本文件。
)
其中,保存指纹的脚本,在使用A01Fpt表时,不需要做任何调整。
而对于刷卡记录的处理,基于各个公司对业务的需求不同可以进行更改。
--员工号,刷卡时间,刷卡地点(考勤机IP)
declare@A0188int
set@A0188=-1
select@A0188=A0188fromA01whereA0190='
'
{0}'
if(@A0188>
-1)
begin
insertintoK07(A0188,K0700,K0701,K0702)
select@A0188,convert(varchar(20),cast('
{1}'
asdatetime),102),convert(varchar(20),cast('
asdatetime),8),right('
{2}'
6)
end
比如,标准接口中的脚本内容如下:
这个脚本说明程序在调用的时候,传入3个参数——
1、员工号 ——考勤机上看到的员工号
2、刷卡时间——时间格式是120,即:
2013-12-1213:
57
3、刷卡地点——考勤机的IP地址(如果直接进入K07表请加大K0702字段的宽度)
接收到刷卡记录后直接插入到考勤刷卡记录表(K07)中去的。
这样做有两个缺点,一是如果考勤记录中的,如果我们需要员工号不存在于系统的A01表中,则该刷卡记录就行丢失;
二是每笔记录都去执行员工号与A0188的转换处理以及日期时间的转换处理,将会降底执行效率。
所以,实际使用中,我们可以建立一张刷卡记录临时表进行过渡处理和原始记录保存操作,这个可以这样做——
创建格式一样的两张表,一张为原始刷卡记录表,另一张为刷卡记录处理临时表,在收到刷卡数据时,只往刷卡记录处理临时表只写,这样收多少写多少,不做多余处理,速度会有很大提升。
当收完一个考勤机后,系统用调用svrSubsequent.sql脚本,而在这个脚本中,我们再对接收到的记录进行批处理,第一步,原记录倒入到原始刷卡记录表中去,第二步,与A01表关联向K07表插入数据,第三步,删除临时表中的数据记录。
这样的好处是,原始记录保存了,数据一批次在SQL中处理,提高效率。
以下是这样的解决方案——
--建立原始记录保存表
Createtablepo_kcard_org(
recDatedatetimenotnulldefault(getdate()),
empCodevarchar(40)notnull,
logTimedatetimenotnull,
macAddrvarchar(15)
--建立记录处理临时表
Createtablepo_kcard_tmp(
第一步,建表——
insertintopo_kcard_tmp(empCode,logTime,macAddr)
select'
'
第二步,改刷卡记录接收接口脚本empCheckFinger.sql
--输入参数:
考勤机IP,记录数
declare@MacIPvarchar(15)
set@MacIP='
--1、备份原始记录
insertintopo_kcard_org
select*frompo_kcard_tmpwheremacAddr=@MacIP
--2、插入到考勤刷卡记录表
selectA0188,
convert(varchar(20),cast(logTimeasdatetime),102),
convert(varchar(20),cast(logTimeasdatetime),8),
'
macAddr'
frompo_kcard_tmp,A01
whereempCode=A0190andmacAddr=@MacIP
--3、删除临时记录
deletepo_kcard_tmpwheremacAddr=@MacIP
第三步,改考勤机接收后续处理接口脚本svrSubsequent.sql
6、转到数据库到设备操作页面——
在这个页面里,可以进行把MAS系统中的人员名单,人员指纹下发到各个考勤机上,也可以处理从各个考勤机中删除指定人员名单的操作。
这里是管理员工具,所以对人员名单的查询过滤直接设计为直接写SQL语句的方案,以便支持更加灵活。
如下图所示——
查询语句必须有的字段以字段名称是:
empCode,empNmae,empProfile,即员工号(即下面表格中的“识别号”),员工姓名,和员工简介这三个字段。
andA0188in(selectA0188fromA01Fpt)
对于SQL的条件范围可以随便写。
比如上面中的语句是查到所有部门编号在1002下的所有人员,如果我们只要查有指纹记录的人员名单可以在后面加一行条件——
selectA0190empCode,A0101empName,CONTENTempProfile
fromA01,DEPTCODE
whereA01.Dept_id=DEPTCODE.Dept_id
anddept_codelike'
1002%'
变成——
从“指纹个数”栏可以看出这个员工在数据库中登记了多枚指纹,如果为0即没有登记过指纹。
在表格中选择人员列表进行指纹的上传或删除操作,可以用户鼠标点住拖拉方式多选,也可以使用按住[Ctrl]点鼠标方式挑选,或是按住[Shift]点鼠标方式连续多选,或组合使用,还可以按键盘[Ctrl]+[A]全选。
按执行上传指纹操作时,如果所选人员的“指纹个数”栏为0,则将只在考勤机上创建该人员的名单,如果指纹大于0则会把所有指纹上传到考勤机上。
当员工在分部入职,需要收集其指纹时,可以先下发名单到考勤机上,然后等该员工在考勤机上登记好指纹后,通过上述第5点的操作,把指纹收到在数据库中,以便于再下发到其他考勤机上。
四、与MAS无缝接口说明
上节设置中说明到中控考勤机接口程序有两种工作模式,一是界面模式,二是服务模式。
现在就来说说第二种服务模式。
1、无缝接口之数据接收
支持数据服务模式接收的接口脚本有三个:
svrGetQueue.sql和empCheckFinger.sql以及svrSubsequent.sql。
empCheckFinger.sql和svrSubsequent.sql两个脚本方案上面第三节第5点已经说得很细了,这里就不再赘述了。
下面只说svrGetQueue.sql接口:
selectMacNumber,MacIp,MacPort,'
00:
01'
start_time,'
23:
59'
stop_timefrom[RollMachine]
svrGetQueue.sql接口是服务对考勤机接收范围的定义,包括要对接收哪几台考勤机进行接收,在什么时间段进行轮询等。
下面的脚本文件中的语句说明对考勤机表中的所有考勤机进行轮询接收,时间段是0点到24点,即一整天。
09:
30'
10:
unionall
18:
19:
但这样的设置可能不能在实际工作中使用,因为对考勤机进行数据接收时,考勤机会暂时停止对指纹打卡的响应,这样如果接收操作开始时刚好有人要打卡,则就打不进来了。
所以,对考勤记录接收一般安排在没有人操作考勤机时进行,所以要分时段进行,比如,我们8点半上班,17点半下班,要在早上上班时间后一小时和晚上下班时间后一小时进行两次接收数据,则可以改这个SQL为如下语句——
同理,你可以从处延伸出其他的分时段方案。
2、无缝接口之考勤机操作
对考勤机命令操作支持上节界面中几乎所有功能。
该功能通过操作命令队列表(po_ftOperate)中的记录,进行对考勤机进行指纹下发,上传,用户登记,删除,设备数据清除等操作。
该服务用到的接口脚本有两个:
svrCmdQueue.sql和svrCmdResult.sql。
select*frompo_ftOperatewhereactdateisnull
svrCmdQueue是查询队列表中需要处理而还没有处理的命令,其中actdate为空则为还没有处理过的记录,所以脚本内容一般如下:
参数两个:
处理结果,记录号
updatepo_ftOperatesetactdate=getdate(),actResult='
whereridin({1})
svrCmdResult则是处理完每一个命令后,对处理结果进行反馈的数据操作:
deletepo_ftOperatewhereridin({1})
上面的语句说明处理完一个命令后,将这笔记录标志为已处理。
这样,这张表将会越来越大,所以在这里我们也可以在处理完的命令后直接删除它:
这个功能支撑的表是:
po_ftOperate表,该表字段说明如下:
[rid]
IDENTITY(1,1)
命令行号
[action]
[varchar]
命令作动名称,取值——
1、reg登记
2、rem移除
3、empty清空
4、haul回传单人
5、haulall回传整机
6、batreg批量登记
[macid]
[int]
设备编号
[macip]
设备IP地址
[macport]
通讯端口号
[cardno]
员工编号
[fingerindex]
指纹序号(0~9)表示10个手指;
当执行删除员工操作时,取值为12
[empname]
员工姓名
[template]
[text]
文本格式的指纹数据
[password]
默认为空
[isenable]
默认为:
true
[actdate]
[datetime]
命令执行时间(命令反馈时回写)
[actResult]
命令执行结果(命令反馈时回写)
简单的说,就是我们要在考勤机上做什么操作,就向这个表里插一条操作命令。
以下是各命令说明例子:
命令
用途
SQL例句
reg
向考勤机登记单个人的名单或指纹
insertintopo_ftOperate([action],macid,macip,macport,cardno,fingerindex,empname,template,isenable)
select'
reg'
1,'
192.168.88.118'
'
4370'
A0190,fingerindex,A0101,tmpData,'
true'
fromA01,A01Fpt
whereA01.A0188=A01Fpt.A0188
andA0190='
8888'
batreg
向考勤机登记一批人和名单或指纹
batreg'
fromA01,A01Fpt,deptcode
andA01.dept_id=deptcode.dept_id
anddept_codelike'
102%'
rem
从考勤机中删除一个人的登记信息
insertintopo_ftOperate([action],macid,macip,macport,cardno,fingerindex)
rem'
1,'
12
empty
清空考勤机内的所有数据
insertintopo_ftOperate([action],macid,macip,macport)
empty'
haul
从考勤机回传所有人的指纹数据到服务器
insertintopo_ftOperate([action],macid,macip,macport,cardno)
haul'
haulall
在了解了上述功能后,我想聪明的你已经完全懂得如何去控制考勤机了吧。
接下来的业务应用中,大家自己发挥它的用途。
案例一、员工入职:
下发工号名单到该员工需要进行考勤的地点的考勤机上,员工在现场管理员的指导下在该考勤机上进行指纹登记,然后,通用命令将他登记的指纹回传数据库保存,然后可以下发到他可能去的地点的考勤机上。
案例二、员工离职:
向登记有该员工指纹的考勤点发送删除指纹命令。
案例三、员工调动:
向调往地的考勤点登记该员工指纹,同时可以删除调出地考勤点上他的指纹信息。
案例四、巡店:
。
五、MAS中考勤业务方案