中控考勤機網絡化方案

原文地址: http://blog.csdn.net/mansai/article/details/52807034


他能解決哪些問題?

1、考勤地分散在各個城市,甚至全球,希望總部統一管控

2、領導出差,在家,隨時想查看員工的出勤狀況

3、無法提供上網的複雜環境

4、公司班車需要員工刷指紋(或刷臉或指靜脈或掌紋或ID卡等)

5、員工自助查詢:做爲請假、調休等依據,結果更公正透明

6、考勤人員規模:小到幾人的微型公司,大到幾百萬人的跨國集團。

7、無需HR人員採集考勤數據、向考勤機寫入員工資料(系統自動操作,網絡斷線資料不會導致丟失)

使用說明:

1、小公司只要一臺普通PC即可。

2、大公司一般都有專用的服務器。

有人會穎問,我小公司就一臺普通PC沒開機如何獲取刷卡資料

回答:當然,沒有開機是無法獲取員工刷卡資料,什麼時候開機,刷卡會在開機時自動上傳。

又有人問,不提供上網環境,又是如何實時獲取到異地員工的刷卡資料

回答:其實上網環境爲考勤機自帶的3G或4G手機卡或專用的上網卡實現(無需成本:原因公司一般都有出差人員,綁定到出差人員的附屬手機卡上,一般電信或移動都免費提供)。

使用設備中控系列考勤機

優點:

國內排名第一大品牌,功能強大,價格公開,京東、淘寶均有售

官方網址:點擊打開鏈接

購買需知:考勤機要支持http Push功能(BS功能),如圖是中控U160截圖,中控考勤機大部分都支持,但有些型號默認沒有開啓該功能,所以在購買時一定要廠商提供,否則購買再加Push功能,廠商需要另外收費。


中控HTTP PUSH 通信協議介紹





開發環境爲VS2012,新建一個httppush專案,如圖


新建三個ashx文件(cdata.ashx/devicecmd.ashx/getrequest.ashx),操作方法如圖




再新增一個Global.asax,如果如圖


因爲中控http push url訪問不支持擴展名,所以要通過Global重寫url,打開Global.asax


具體代碼如下:


數據庫使用sqlserver(目前類庫也支持oracel或mysql)

建立4個table分別命名:

TAttendanceMachine:記錄考勤機信息

TAttendanceCmds:記錄服務器向考勤機下發命令(例如新進員工資料自動寫入考勤機,員工離職自動刪除考勤機,指紋變更自動寫入指紋到考勤機)

TAttendanceCardTime:員工考勤刷卡記錄表

TEmpFinger:員工指紋表

sql腳本如下:

CREATE TABLE [dbo].[TAttendanceCardTime](
[FID] [int] IDENTITY(1,1) NOT NULL,
[FEmpID] [varchar](15) NULL,
[FEmpName] [nvarchar](50) NULL,
[FDateTime] [datetime] NULL,
[FVerify] [tinyint] NULL,
[FCreateDateTime] [datetime] NULL,
 CONSTRAINT [PK_TAttendanceCardTime] PRIMARY KEY CLUSTERED 
(
[FID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]


GO


SET ANSI_PADDING OFF
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'工號' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TAttendanceCardTime', @level2type=N'COLUMN',@level2name=N'FEmpID'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TAttendanceCardTime', @level2type=N'COLUMN',@level2name=N'FEmpName'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'刷卡時間' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TAttendanceCardTime', @level2type=N'COLUMN',@level2name=N'FDateTime'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'刷卡方式:0密碼1指紋2卡9其它' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TAttendanceCardTime', @level2type=N'COLUMN',@level2name=N'FVerify'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'刷卡記錄上傳時間' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TAttendanceCardTime', @level2type=N'COLUMN',@level2name=N'FCreateDateTime'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'刷卡記錄表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TAttendanceCardTime'
GO


ALTER TABLE [dbo].[TAttendanceCardTime] ADD  CONSTRAINT [DF_TAttendanceCardTime_F_CreateDateTime]  DEFAULT (getdate()) FOR [FCreateDateTime]
GO

CREATE TABLE [dbo].[TEmpFinger](
[FID] [int] IDENTITY(1,1) NOT NULL,
[FEmpID] [varchar](15) NULL,
[FingerID] [smallint] NULL,
[FTemplate] [nvarchar](max) NULL,
[FSize] [int] NULL,
[Fpversion] [nvarchar](10) NULL,
[FValid] [bit] NULL,
[FCreatorID] [varchar](15) NULL,
[FCreatorName] [nvarchar](10) NULL,
[FCreateDateTime] [datetime] NULL,
[FModifyID] [varchar](15) NULL,
[FModifyName] [nvarchar](10) NULL,
[FModifyDateTime] [datetime] NULL,
[FDeleteDateTime] [datetime] NULL,
[FStatus] [tinyint] NULL,
[FSN] [varchar](50) NULL,
 CONSTRAINT [PK_T_EmpFinger] PRIMARY KEY CLUSTERED 
(
[FID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]


GO


SET ANSI_PADDING OFF
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'手指順序' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TEmpFinger', @level2type=N'COLUMN',@level2name=N'FingerID'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'指紋信息' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TEmpFinger', @level2type=N'COLUMN',@level2name=N'FTemplate'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'指紋長度' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TEmpFinger', @level2type=N'COLUMN',@level2name=N'FSize'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'指紋版本' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TEmpFinger', @level2type=N'COLUMN',@level2name=N'Fpversion'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'指紋驗證' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TEmpFinger', @level2type=N'COLUMN',@level2name=N'FValid'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'修改時間' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TEmpFinger', @level2type=N'COLUMN',@level2name=N'FModifyDateTime'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'刪除時間' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TEmpFinger', @level2type=N'COLUMN',@level2name=N'FDeleteDateTime'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'狀態碼' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TEmpFinger', @level2type=N'COLUMN',@level2name=N'FStatus'
GO


EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'員工指文表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TEmpFinger'
GO


ALTER TABLE [dbo].[TEmpFinger] ADD  CONSTRAINT [DF_T_EmpFinger_F_CreateDateTime]  DEFAULT (getdate()) FOR [FCreateDateTime]
GO

打開cdata.ashx,寫入如下代碼(此頁面主要獲取考勤機基本資料,員工刷卡資料,採集員工在考勤機上登記的指紋,當然也可以單獨購買指紋儀(指紋儀讀取方法指紋保存到數據的方法可以聯繫我。))


獲取考勤機及刷卡資料再通知考勤機,所以考勤資料不會丟失,當網絡異常,或網線斷掉,網絡重連後會自動發送,無需人工操作


打開getrequest.ashx寫入如下代碼(此頁面主要是服務器向考勤機下發命令,例如向多臺考勤機寫入員工資料、刪除員工資料,更新姓名,寫入指紋等)


打開devicecmd.ashx寫入代碼(此頁面主要是考勤機傳回getrequest.ashx頁面下發的命令執行狀態,是成功還是失敗,修改數據庫裏狀態)



然後編譯,佈署到IIS,設置端口號,可以默認的80,此IIS的IP與服務器端口要填入中控考勤機,具體從下圖進入,

進入考勤機通訊設置,ADMS設置,輸入服務器的IP地址與端口號。


中控的其它型號設置步驟基本相似,新版不叫ADMS是Web服務,但都是在通訊設置裏。

帶3G或4G卡的考勤機設置方法一致。

如果是廣域網連接,即異地連接:

大公司都是由資訊解析域名,將域名與端口號提交給你,你直接設置到考勤機即可。

小公司都要自己操作:

操作方法如下:

你可以購買一臺帶域名解析的路由器(現在路由器大部分都支持,具體可以購買前諮詢路由器廠商)

然後映射端口號到IIS服務器地址,請詳見:點擊打開鏈接

動態IP地址上網,需要註冊DDSN,註冊地址:點擊打開鏈接


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章