考勤資料同步作業

2021-10-12 06:00:23 字數 4630 閱讀 7422

--思路

由於使用者資料庫外網不能訪.採用由使用者推送資料到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用的也不多,這裡根據自己的想法參考了別人的部落格,加上自己的驗證。學到了一些收穫,在這裡記下來。考勤系統最關心的是簽到與簽退,這裡簽到是第一次打卡的時間,簽退是最後一次打卡的時間。這麼做記錄會不全面,不推薦,只做驗證用 這裡我們不關...