1. 程式人生 > >asp.net(c#)全新BS架構考勤完美解決方案

asp.net(c#)全新BS架構考勤完美解決方案

他能解決哪些問題?

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,註冊地址:點選開啟連結

企業行事曆,考勤結算方法會逐步更新,先上圖看下效果(如果你瀏覽器看到的圖片不清晰,可以將圖片連結複製到新增視窗檢視)


如有穎問請聯絡:[email protected]或微信:25489181(加微信獲取原始碼)

針對碼農的養生保健微信18136761128(專治頸椎、久坐導到慢性疾病,已經上央視了,假一罰十)

相關推薦

asp.net(c#)全新BS架構考勤完美解決方案

他能解決哪些問題? 1、考勤地分散在各個城市,甚至全球,希望總部統一管控 2、領匯出差,在家,隨時想檢視員工的出勤狀況 3、無法提供上網的複雜環境 4、公司班車需要員工刷指紋(或刷臉或指靜脈或掌紋或ID卡等) 5、員工自助查詢:做為請假、調休等依據,結果更公正透明 6、考勤

讓Windows Server 2008 + IIS 7+ ASP.NET 支援10萬併發請求--手動解決方案(轉載)

今天下午17點左右,部落格園部落格站點出現這樣的錯誤資訊: Error Summary: HTTP Error 503.2 - Service Unavailable The [email protected] setting is being exceeded. 

asp.net 中 DropDownList 加入可輸入功能解決方案

先把這段JS程式碼放到你頁面的HTML中去 function catch_keydown(sel) { switch(event.keyCode) { case 13: //Enter; sel.options[sel.length] = new Option("",

Asp.net utf-8 編碼中文亂碼完全解決方案

 Unicode 編碼正逐漸成為多語言支援的最通用解決方案。採用 Unicode 編碼的中文網頁能在各種平臺、各種類的瀏覽器上都得到很好的相容。utf-8 是 Unicode 的一種儲存/交換實現方式。對於不同數值範圍的 Unicode 碼,它採用變長的方式來編碼:所有

三層架構中使用實體類填充泛型集合代替DataTable解決方案(ASP.NET+C#)

用三層架構開發專案,經常會遇到如下場景:       D層負責與資料庫互動,一般是得到DataTable或DataSet物件,然後返回給B層,B層進行類似的處理來讀取資料:dt.Rows[0][“xxx”];或者dt.Rows[0][1];(強烈

asp.net c# 網頁 導出excel 多表格 多個sheet

sys file table 網頁 pro objects class cat false /// <summary> ///可導出多個sheet表 /// </summary> /// <param

(轉)ASP.NET(C#)FileUpload實現上傳限定類型和大小的文件到服務器

web 環境 posted using 結果 ring event run ont 上傳文件有兩個主要的目的地,一個是服務器,另一個是數據庫,ASP.NET內置了FileUpload這個上傳控件,文本框顯示用戶選擇的文件的全名. 其屬性主要包括: ContenLength:

VS ASP.NET C#編譯ScriptManager bug

文件 clas 感覺 controls 報錯 radi control 項目 style 使用VS(使用的是當前企業最新版15.5.5) C#做ASP.NET項目時,在“控制臺應用程序”與“類庫”輸出類型切換時遇到錯誤: error CS0234: 命名空間“System

關於為啥ASP.Net C# 中ListBox選中事件一直不生效的問題

sel nat csharp page topo edi auto sharp 關於 在pageLoad方法中進行綁定了listbox的值,一定要寫在 if (!IsPostBack) { } 這個裏面 並且!!!!一定要設置 <asp:ListBox ID="

ASP.NET C# 連接 Oracle數據庫增刪改查,事務

config 註釋 數據庫 using tran datatable 文件 影響 常用 一、知識介紹   ①ASP.NET 使用的是MVC模式,開發工具Visual studio ,語言C#   ②Oracle是比較重型的數據庫,這裏主要介紹連接數據庫,對數據進行具體的使用

Asp.Net(C#)使用oleDbConnection 連接Excel

cti 4.0 datatable asp.net 數據 而不是 sele .sh 驅動 來自森大科技官方博客 http://www.cnsendblog.com/?p=84 Asp.Net(C#)使用oleDbConnection 連接Excel "Provider

Asp.net mvc+三層架構(註冊篇)

                                            &

ASP.NET C# JSON 格式轉換 « 關於網路那些事...

ASP.NET JSON 格式轉換 首先透過 NuGet 封裝管理員來新增套件 在專案> 右鍵 > 管理 NuGet 套件... 在 瀏覽

ASP.NET C# 不同瀏覽器在 buffer 緩衝區 與Response.Flush() 表現差異比較 « 關於網路那些事...

ASP.NET C# 不同瀏覽器在 buffer 緩衝區 與Response.Flush() 表現差異比較 ASP 輸出內容到網頁的方式基本上有兩種 直接輸出 緩

ASP.NET C# 判斷HTTP來源型別,取得HTTP 請求(GET, POST)引數 « 關於網路那些事...

ASP.NET C# 判斷HTTP來源型別,取得HTTP 請求(GET, POST)引數 透過 C# for ASP.NET 的 Response 可以取得HTTP請

ASP.NET C# 判斷 HTTP REQUEST 請求來源 KEY 是否存在 « 關於網路那些事...

ASP.NET C# 判斷 HTTP REQUEST 請求來源 KEY 是否存在 HTTP 請求來源可以為 POST 或 GET 型別,並且夾帶 key 與 valu

ASP.NET C# 生命週期 « 關於網路那些事...

ASP.NET 生命週期 ASP.NET 可以動態的生成頁面,而運作的架構生命週期主要可以分為: 應用程式生命週期(Application Life Cycle)

ASP.NET Core 企業開發架構概述

企業開發框架包括垂直方向架構和水平方向架構。垂直方向架構是指一個應用程式的由下到上疊加多層的架構,同時這樣的程式又叫整體式程式。水平方向架構是指將大應用分成若干小的應用實現系統功能的架構,同時這樣的系統叫做分散式系統。在架構上java和.net世界都有優秀的框架支援構建垂直和水平方向架構。ASP.Net

asp.net(c#)上傳檔案時檢測檔案型別方法小結

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using Syst

Asp.net C# 獲取本週上週本月上月本年上年第一天最後一天時間大全

專案中用到了,所以就寫全了,供參考使用。 DateTime dt=DateTime.Now; int weeknow = Convert.ToInt32(DateTime.Now.DayOfWeek); int dayspan = (-1) * weeknow + 1; D