--思路
由於使用者資料庫外網不能訪.採用由使用者推送資料到oa
解決方案: 由使用者資料庫傳送考勤資料到考勤介面
步驟 1.在使用者資料庫新增乙個和使用者考勤記錄表一樣的表(為了不汙染使用者原本系統資料庫.)
2.將原本資料表的資料匯入到新的考勤表
3.將考勤資料同步到oa
實現:1.在使用者資料庫新增乙個和使用者考勤記錄表一樣的表
create table [dbo].[oa_checkinout](
[id] [int] identity(1,1) not null,
[checktime] [datetime] not null,
[checktype] [nvarchar](5) null,
[verifycode] [int] null,
[newtype] [nvarchar](3) null,
[abnormiteid] [int] null,
[schid] [int] null,
[purpose] [int] null,
[workcode] [nvarchar](10) null,
[reserved] [nvarchar](100) null,
[sn] [nvarchar](20) null,
[userid] [int] not null,
[issync] int not null)--新增字段 表示是否同步
2.將原本資料表的資料匯入到新的考勤表
採用作業的方式每個一段時間去同步本地最新的考勤資料
作業名稱:
set identity_insert [zkeco].[dbo].[oa_checkinout] on
insert into [zkeco].[dbo].[oa_checkinout] ( id, checktime, checktype, verifycode,newtype, abnormiteid,schid,purpose,workcode,reserved,sn, userid, issync)
select c.id, c.checktime, c.checktype, c.verifycode,c.newtype, c.abnormiteid,c.schid,c.purpose,c.workcode,c.reserved,c.sn, c.userid, 0
from [zkeco].[dbo].[checkinout] c left outer join userinfo u on c.userid=u.userid where c.checktime >= dateadd(day, -10, convert(varchar(100), getdate(), 23))
and not exists (select id, checktime, checktype, verifycode,newtype, abnormiteid,schid,purpose,workcode,reserved,sn, userid, issync from [zkeco].[dbo].[oa_checkinout]
where id=c.id and c.checktime=checktime and c.userid=userid )
3.將考勤資料同步到oa
declare @serviceurl as varchar(1000)
-- 考勤api介面位址全路徑
declare @urladdress varchar(500)
set @urladdress = ''
----這裡需要修改
--位址
declare @object as int
-- sp_oacreate 的實體地址
declare @responsetext as varchar(8000)
--返回的結果資訊
declare @body as varchar(max)
--post 的資料
declare @temp table
(id int ,
empno varchar(50) ,
empname varchar(50) ,
checktime datetime
)--表變數 需要根據實際情況修改
--以下引數對應webservice中4個引數的[引數名] 不能修改
declare @type varchar(4) ,
@productkey varchar(10) ,
@hard varchar(4) ,
@log varchar(3) ,
@empnoprefix varchar(4)
set @type = 'type'
--**型別 zk 或 dh
set @productkey = 'productkey'
--產品金鑰
set @hard = 'hard'
--hr系統考勤機id
set @log = 'log'
--考勤資料字串拼接
set @empnoprefix = ''
--人員編號字首
--以下引數對應webservice中4個引數的[引數名的值] 根據實際情況修改
declare @type_value varchar(10) ,
@productkey_value varchar(100) ,
@hard_value varchar(10) ,
@log_value varchar(max)
set @type_value = 'zk'
set @productkey_value = '54afd009-9be6-4f01-975e-38dfecd84d5a'
set @hard_value = '1'
set @log_value = ''
------考勤相關變數---------
declare @pagesize int
--分頁大小
set @pagesize = 1000
declare @pageindex int
--當前
set @pageindex = 0
declare @dwktime datetime
--考勤時間
--生成log
declare @id int ,
@userid int ,
@checktime datetime ,
@badgenumber nvarchar(50) ,
@user_name nvarchar(50)
--建立游標
declare cur cursor
forselect c.id, c.checktime, c.userid,u.badgenumber,u.name
from [zkeco].[dbo].[oa_checkinout] c
left join [zkeco].[dbo].[userinfo] u on c.userid=u.userid
where issync = 0
and checktime <= getdate()
and checktime >= dateadd(day, -30, convert(varchar(100), getdate(), 23))
order by c.checktime
open cur
fetch next from cur into @id, @checktime,@userid,@badgenumber,@user_name
while ( @@fetch_status = 0 )
begin
--(1)生成所需要的資料 userid dwktime
set @dwktime = @checktime
if @badgenumber is not null
and @userid > 0
begin
set @log_value = @log_value
+ convert(varchar(100), @badgenumber) + '|'
+ convert(varchar(100), @dwktime, 120) + ';'
insert into @temp
( id ,
empno ,
empname ,
checktime
)values ( @id ,
@badgenumber , -- empno - varchar(50)
@user_name , -- empname - varchar(50)
@checktime
)set @pagesize = @pagesize + 1
--分頁
if @pageindex = @pagesize
begin
set @serviceurl = @urladdress
set @body = @type + '=' + @type_value + '&'
+ @productkey + '=' + @productkey_value
+ '&' + @hard + '=' + @hard_value + '&'
+ @log + '=' + @log_value
dpkg ihr狀態 考勤機資料無法同步
考勤機資料無法同步 最後更新於 2020 06 29 15 27 45 如果安裝後仍出現資料無法同步的問題,則建議按下面步驟排查 首先在時間管理 時間設定 考勤機中檢視考勤機連線狀態。考勤機連線狀態分為兩種 離線part1 離線 1.確認考勤機型號是否為中控u160 iface702系列,需要帶bs...
考勤打卡記錄資料庫表結構 考勤系統資料表結構
第頁共 頁考勤系統資料表結構 考勤員資訊設定 t kqemp info man id varchar2 20 n工號 post info varchar2 20 y崗位描述 power user varchar2 20 y建立人 power date date y建立時間 power user de...
關於考勤資料的思考(MySQL)
最近考勤系統老是出錯,不知道公司考勤是怎麼做的。因為自己對mysql用的也不多,這裡根據自己的想法參考了別人的部落格,加上自己的驗證。學到了一些收穫,在這裡記下來。考勤系統最關心的是簽到與簽退,這裡簽到是第一次打卡的時間,簽退是最後一次打卡的時間。這麼做記錄會不全面,不推薦,只做驗證用 這裡我們不關...