通达OA 同步中控考勤机 增强版
如果你用的是中控考勤机且考勤机能联网,那恭喜有福了! 最近发现考勤机提供web方式查询,经过调试可以用程序直接读取考勤机数据跨过考勤机软件及其access数据库,数据同步及时性、可靠性大幅提高。
通达oa2011已经支持 指纹考勤机 但只限中控iclock660 这款2000大洋的型号,通过本文的开发接口,可以与任意一款指纹机集成, 需求指纹机管理软件能实时保存数据;
我这里用的是 中控u160 指纹考勤机, 这款机器支持WIFI ,可以实现实时传输考勤数据,这也就意味着,用户采集指纹马上就能够在自己的OA上看到自己的考勤数据;
特别指出的一点是这款机器的中控u160WIFI配置 容易出错的是 网线连接的ip网段 设置192.168.3.x,WIFI ip网段是在192.168.1.x ,这样才能保证成功, 大多数都是错在这里
之前博文里提到的使用PHP同步 ACCESS与mysql数据库的方式,有些缺点由于php是被动执行的脚步,我们只能够定时重复执行的方式来实现,确实不方便;
来说下新方案:
1, 首先我们仍使用中控提供的考勤软件 ATT2008或称为zktime5.0 ,考勤机光盘附带的标准版,一般都有, 这里我们不再使用access而使用MSSQl数据库,安装目录下有一文件 mssql.sql ,放在sqlserver企业管理器中执行,就创建好要使用的数据库及表了,我们命名数据库为 Att2008;
2,打开 表checkinout , 添加自增字段 id (这里严重鄙视一下!。。 ),修改通达oa数据库 attend_duty 增加 outID字段
3,使用sql企业管理器创建作业任务名为:update_TDOA ,作业计划选择每天 ,作业步骤 添加以下脚本:
use att2008
declare @num int,
<span style="white-space:pre"> </span>@sqls nvarchar(4000),
<span style="white-space:pre"> </span>@con varchar(200),
<span style="white-space:pre"> </span>@startID int,
<span style="white-space:pre"> </span>@attend_duty varchar(300)
set @startID=0
--需先安装MySQL ODBC 3.51驱动
set @con='OPENROWSET(''MSDASQL'',''DRIVER={MySQL ODBC 3.51 Driver};SERVER=127.0.0.1;PORT=3336;DATABASE=td_oa;USER=root;PASSWORD=myoa888;STMT=set names gb2312;OPTION=2049'','
set @attend_duty=@con+'''select * from ATTEND_DUTY;'')'
set @sqls='SELECT @a=outid FROM '+@con+'''select outid from attend_duty order by id desc limit 1;'')'
exec('delete '+@con+'''select * from attend_duty'') where register_type=2 and CONVERT(varchar(12) , register_time, 112 )=
(select top 1 CONVERT(varchar(12) ,CHECKTIME, 112 ) from CHECKINOUT order by CHECKTIME desc)
')
exec sp_executesql @sqls,N'@a int output',@startID output
print @startID
exec('insert '+@con+'''select * from ATTEND_DUTY'') (outid,USER_ID,REGISTER_TYPE,REGISTER_TIME,REGISTER_IP,type)
SELECT top 500 C.id,case when A.user_id is not null then A.user_id else ''0'' end,
至此,你已经实现了数据同步,不过到这里仍然是定时执行,如果你没有进一步的要求,到这里也可以了
同步数据实现每次调用只更新增量数据,并且自动识别考勤类型写入mysql,每天第一次为上班登记,最后一次打卡为下班数据;
4,打开sql查询 添加以下脚本:
use att2008
if (object_id('tgr_zk2TDOA_insert', 'tr') is not null)
drop trigger tgr_zk2TDOA_insert
go create trigger tgr_zk2TDOA_insert on CHECKINOUT Instead Of Insert
as
SET XACT_ABORT ON
--************************************************************* if exists (select 1 from checkinout where checktime=(select checktime from inserted) )
return; insert checkinout(USERID,CHECKTIME,CHECKTYPE,VERIFYCODE,SENSORID,WORKCODE,sn,USEREXTFMT)
select USERID,CHECKTIME,CHECKTYPE,VERIFYCODE,SENSORID,WORKCODE,sn,USEREXTFMT from inserted --执行同步作业
declare @JobID uniqueidentifier
select @JobID=Job_ID from msdb.dbo.sysjobs where Name='update_TDOA' --查Job_ID
EXEC msdb.dbo.sp_start_job @job_id = @JobID --************************************************************
go
SET XACT_ABORT OFF
print '更新成功!';
go
此处,使用触发器调用上一步的作业执行数据同步到OA,并且修正了 中控考勤软件的一处bug,你会发现每次点击考勤软件中下载记录会像数据库中添加全部数据 ,比如之前有9000条数据,点一次变成18000了再一次27000条记录了, 太可怕了。。。此处再鄙视以下中控;
这里触发器增加了验证,如果要增加的记录 数据库中已经有了,不再添加;
有人会问为什么不把同步脚本放在触发器中执行? 这里使用链接服务器写入mysql时直接在触发器中执行 基本不会成功,需要配置很多东西,还不一定成功,直接调用作业吧;
通达OA 同步中控考勤机 增强版的更多相关文章
- 最近做了一个通达OA的大料:20170905最新版本破解可改单位名称,无限制安装
最近做了一个通达OA的大料:20170905最新版本破解可改单位名称,无限制安装 用户约七十家,总体不错,修改了两次注册授权文件,完美使用中 可联系麦枫http://www.mfsun.com管理员Q ...
- 通达OA 指纹考勤机接口 源代码
通达oa2011已经支持 指纹考勤机 但只限中控iclock660 这款2000大洋的型号 通过本文的开发接口,可以与任意一款指纹机集成, 需求指纹机管理软件能实时保存数据 我这里用的是 中控u16 ...
- OA系统高性能解决方案(史上最全的通达OA系统优化方案)
序: 这是一篇针对通达OA系统的整体优化方案,文档将硬件.网络.linux操作系统.程序本身(包括web和数据库)以及现有业务有效结合在一起,进行了系统的整合优化.该方案应用于真实生产环境,部署完成后 ...
- centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.48方案
centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.42方案 整体方案: 环境准备,在备用服务器安装mysql5.5数据库 1.停用生产环境的应用访问 直接修改web的访 ...
- 通达OA任意文件上传+文件包含GetShell/包含日志文件Getshell
0x01 简介 通达OA采用基于WEB的企业计算,主HTTP服务器采用了世界上最先进的Apache服务器,性能稳定可靠.数据存取集中控制,避免了数据泄漏的可能.提供数据备份工具,保护系统数据安全.多级 ...
- 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版
<zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...
- 个人永久性免费-Excel催化剂功能第60波-数据有效性验证增强版,补足Excel天生不足
Excel在数据处理.数据分析上已经是公认的最好用的软件之一,其易用性和强大性也吸引无数的初中高级用户每天都在使用Excel.但这些优点的同时,也带出了一些问题,正因为其不同于一般的专业软件,需要专业 ...
- 中控考勤机使用 zkemkeeper SDK订阅考勤数据事件失效解决方式
问题 前同事编写的对中控考勤机数据集成项目当中,打卡数据不能实时进行上传到平台当中,一直靠定时全量上传来同步数据. 阅读代码后,发现代码中有实时上传数据的逻辑,但是运行一段时间后,中控zkemkeep ...
- 通达OA任意用户登录 漏洞复现
0x00 漏洞简介 通达OA国内常用的办公系统,使用群体,大小公司都可以,其此次安全更新修复的高危漏洞为任意用户登录漏洞.攻击者在远程且未经授权的情况下,通过利用此漏洞,可以直接以任意用户身份登录到系 ...
随机推荐
- DAC重置max server memory
15:44 2014-01-24 08R2,一次通过GUI更改'最大服务器内存(MB)'为16MB,errorlog显示信息如下 :: . Run the RECONFIGURE statement ...
- Vue.2.0.5-条件渲染
v-if 在字符串模板中,如 Handlebars ,我们得像这样写一个条件块: <!-- Handlebars 模板 --> {{#if ok}} <h1>Yes</h ...
- oracle表空间相关SQL语句
Oracle 数据库查看表空间的使用情况 SELECT d.tablespace_name, space "SUM_SPACE(MB)", ) "USED_SPACE(M ...
- 转:DLL如何导出C++的类
由于DLL的出现是针对C语言的,本身对C++的支持不够好.所以如何从DLL中导出C++的类作为DLL的API的一部分就成了问题. 我试了一下 class __declspec(dllexport) F ...
- WCF笔记
http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.iparameterinspector.aftercall ...
- cocoapods遇到error: RPC failed; curl 56 SSLRead() return error -36问题
在安装cocoapods遇到的问题 [!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master Cloning into ...
- Java基础之写文件——将多个字符串写入到文件中(WriteProverbs)
控制台程序,将一系列有用的格言写入到文件中. 本例使用通道把不同长度的字符串写入到文件中,为了方便从文件中恢复字符串,将每个字符串的长度写入到文件中紧靠字符串本身前面的位置,这可以告知在读取字符串之前 ...
- ACdream 1104 瑶瑶想找回文串(SplayTree + Hash + 二分)
Problem Description 刚学完后缀数组求回文串的瑶瑶(tsyao)想到了另一个问题:如果能够对字符串做一些修改,怎么在每次询问时知道以某个字符为中心的最长回文串长度呢?因为瑶瑶整天只知 ...
- hdu5354 Bipartite Graph
分治+并查集.假设要求[L,mid]的答案,那么很明显,如果一条边的两个端点都>mid的话或者一个端点>mid一个端点<L,说明询问[L,mid]这个区间中任何一点时候,这一条边都是 ...
- /Users/alamps/AndroidStudioProjects/Demo11ListView
package com.example.demo11listview; import android.os.Bundle; import android.app.Activity; import an ...