原文地址: 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,註冊地址:點擊打開鏈接