轩特门禁/实名制对接
设备对接 2018-09-07 17:22:52

 1、sqlserver迷你版

2.png

服务器名称一般是.,1688\MJ

标准语法:

C/C++ Code复制内容到剪贴板
  1. <add name="SQL" connectionString="server=.,1688\MJ;database=BSData;Trusted_Connection=SSPI"  
  2.       providerName="System.Data.SqlClient" />  

 

有的电脑如果不需带端口,去掉“,1688”就行了。大部份是要带的。

 

 

2、进入数据库:

2.png

 1.png

解锁密码一般是168168

 

如果没有左侧菜单:

3.png

 

TEmployee 表取人员数据,也可以直接将人员信息录入进去,不影响其他表

TEvent 表取刷卡数据

 

连接信息,也可以使用sqlserver用户密码登录,帐号sa  密码168168

备份的数据库后缀名是.sdb,在后缀添加一个.bak即可导入sqlserver库

 恢复数据库参照:

http://www.yoyo88.cn/study/sqlserver/354.html

 

 

查询人员档案,读取部门表,职位表

SqlServer版查询:

SQL Code复制内容到剪贴板
  1. SELECT TOP 10   
  2.     EmployeeData.EmployeeID as door_id,  
  3.     EmployeeData.EmployeeCode,  
  4.     EmployeeData.EmployeeName as nickname,  
  5.     EmployeeData.CardNo as door_card_no,  
  6.     EmployeeData.Sex as gender,  
  7.     EmployeeData.Birthday,  
  8.     EmployeeData.Phone as phone,  
  9.     EmployeeData.JobID as door_job_id,  
  10.     EmployeeData.DeptID as door_dep_id,  
  11.     EmployeeData.RegDate,  
  12.     EmployeeData.EndDate,  
  13.     EmployeeData.Deleted,  
  14.     EmployeeData.Note1 as role_name,  
  15.     EmployeeData.Note2,  
  16.     EmployeeData.Note3,  
  17.     EmployeeData.Note4,  
  18.     EmployeeData.Note5,  
  19.     EmployeeData.[TimeStamp],  
  20.     DepartmentData.DeptLevel as door_dep_level,  
  21.     DepartmentData.DeptName as door_dep_name,  
  22.     DepartmentData.DeptNote as door_dep_note,  
  23.     JobData.JobName as door_job_name,  
  24.     JobData.JobNote as door_job_note  
  25.   FROM TEmployee as EmployeeData   
  26.   LEFT JOIN TDeptA as DepartmentData on EmployeeData.DeptID=DepartmentData.DeptID  
  27.   LEFT JOIN TJob as JobData on EmployeeData.JobID=JobData.JobID   
  28.   WHERE EmployeeData.Deleted = 0  

 

QQ截图20181126110804.png

根据Note1字段 别名是role_name 来区分,

如果role_name=管理员,则 door_dep_name 是部门名称,door_job_name 是职位名称

反之: 则 door_dep_name 是班组名称,door_job_name 是工种名称

SqlServer的配置文件参考:

 

 Access的配置文件参考:

Config-access
文件类型: .txt 9278ffb08d57f0d75ca20b15a8941bde.txt (1.56 KB)

 

对接软件下载链接:

http://www.yoyo88.cn/e/extend/publish/common_door_synchronize4_out/Release.zip(托盘区右击设置,密码m123456,)

刷卡记录的SQL必须有eventID

SQL Code复制内容到剪贴板
  1. DROP TABLE IF EXISTS `monitor_door_tevent`;  
  2. CREATE TABLE `monitor_door_tevent` (  
  3.   `id` int(11) NOT NULL AUTO_INCREMENT,  
  4.   `EventID` int(11) DEFAULT '0',  
  5.   `EventTime` datetime DEFAULT NULL,  
  6.   `EmployeeID` int(11) DEFAULT '0' COMMENT '用户ID',  
  7.   `CardNo` varchar(50) COLLATE utf8_unicode_ci DEFAULT '',  
  8.   `DoorID` tinyint(2) DEFAULT '0',  
  9.   `ControlID` tinyint(2) DEFAULT '0',  
  10.   `ControlText` varchar(128) COLLATE utf8_unicode_ci DEFAULT '' COMMENT '控制器名称',  
  11.   `EventType` tinyint(2) DEFAULT '0' COMMENT '刷卡类型',  
  12.   `EventText` varchar(50) COLLATE utf8_unicode_ci DEFAULT '' COMMENT '刷卡动作名称',  
  13.   `created_at` int(11) DEFAULT NULL,  
  14.   `updated_at` int(11) DEFAULT NULL,  
  15.   PRIMARY KEY (`id`),  
  16.   KEY `EventTime` (`EventTime`) USING BTREE,  
  17.   KEY `EmployeeID` (`EmployeeID`) USING BTREE,  
  18.   KEY `CardNo` (`CardNo`) USING BTREE  
  19. ) ENGINE=MyISAM AUTO_INCREMENT=22930 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;  

 

 

http://www.yoyo88.cn/e/extend/publish/common_door_synchronize2/publish.htm(版本二)

 

如果刷卡记录的主键选择int ,那么刷卡记录的SQL必须有eventID 

如果刷卡记录的主键选择string,那么刷卡记录的SQL必须有primaryKey,可以用时间as

SQL Code复制内容到剪贴板
  1. DROP TABLE IF EXISTS `widom_monitor_door_tevent`;  
  2. CREATE TABLE `widom_monitor_door_tevent` (  
  3.   `id` int(11) NOT NULL AUTO_INCREMENT,  
  4.   `EventID` int(11) DEFAULT '0',  
  5.   `EventTime` datetime DEFAULT NULL,  
  6.   `EmployeeID` int(11) DEFAULT '0' COMMENT '用户ID',  
  7.   `Employee` varchar(60) COLLATE utf8_unicode_ci DEFAULT '',  
  8.   `CardNo` varchar(50) COLLATE utf8_unicode_ci DEFAULT '',  
  9.   `DoorID` tinyint(2) DEFAULT '0',  
  10.   `ControlID` tinyint(2) DEFAULT '0',  
  11.   `ControlText` varchar(128) COLLATE utf8_unicode_ci DEFAULT '' COMMENT '控制器名称',  
  12.   `EventType` tinyint(2) DEFAULT '0' COMMENT '刷卡类型',  
  13.   `EventText` varchar(50) COLLATE utf8_unicode_ci DEFAULT '' COMMENT '刷卡动作名称',  
  14.   `created_at` int(11) DEFAULT NULL,  
  15.   `updated_at` int(11) DEFAULT NULL,  
  16.   `primaryKey` varchar(128) COLLATE utf8_unicode_ci DEFAULT '',  
  17.   PRIMARY KEY (`id`),  
  18.   KEY `EventTime` (`EventTime`) USING BTREE,  
  19.   KEY `EmployeeID` (`EmployeeID`) USING BTREE,  
  20.   KEY `CardNo` (`CardNo`) USING BTREE  
  21. ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;  

 

接收刷卡记录:

PHP Code复制内容到剪贴板
  1. /** 
  2.  * 如果门禁没有主键ID,则获取当前最大的主键编号,一般为时间等 
  3.  * @return array 
  4.  */  
  5. public function actionGetMaxPrimary()  
  6. {  
  7.     $idx = DoorTevent::find()->max("primaryKey");  
  8.     exit($idx?$idx:"");  
  9. }  
  10.   
  11. /** 
  12.  * 如果门禁有主键ID,则获取当前最大的门禁记录ID 
  13.  */  
  14. public function actionGetMaxId()  
  15. {  
  16.     $idx = DoorTevent::find()->max("EventID");  
  17.     exit($idx?$idx:"");  
  18. }  

 

PHP Code复制内容到剪贴板
  1.     /** 
  2.      * 采集刷卡数据 
  3.      * @return array 
  4.      */  
  5.     public function actionSaveEvent()  
  6.     {  
  7.         $post = request()->post();  
  8.         $id = request()->post("EventID", null);  
  9.         $primaryKey = request()->post("primaryKey", null);  
  10.         $CardNo = request()->post("CardNo", null);  
  11.         $msg = "ok";  
  12.         $model = new DoorTevent();  
  13.         if ($id) {  
  14.             $res = DoorTevent::find()->where(['EventID' => $id])->one();  
  15.             if ($res) {  
  16. //                $model = $res;  
  17. //                $model->save(); // 不用再更新一次了  
  18.                 $msg = "重复数据,跳过";  
  19.                 return [  
  20.                     "errmsg" => $msg  
  21.                 ];  
  22.             } else {  
  23.                 $msg = "新增成功";  
  24.             }  
  25.         }  
  26.   
  27.         // 如果有主键和卡卡号,同一卡号,同一时间不允许重复录入  
  28.         if($primaryKey && $CardNo){  
  29.             $res = DoorTevent::find()->where(['primaryKey' => $primaryKey,'CardNo'=>$CardNo])->one();  
  30.             if ($res) {  
  31.                 $msg = "重复数据,跳过";  
  32.                 return [  
  33.                     "errmsg" => $msg  
  34.                 ];  
  35.             } else {  
  36.                 $msg = "新增成功";  
  37.             }  
  38.         }  
  39.   
  40.         $model->setAttributes($post);  
  41.         if ($model->save()) {  
  42.             return [  
  43.                 "errmsg" => $msg  
  44.             ];  
  45.         } else {  
  46.             return [  
  47.                 "errcode" => 400,  
  48.                 "errmsg" => current($model->getFirstErrors())  
  49.             ];  
  50.         }  
  51.     }  

 

 

本文来自于:http://www.yoyo88.cn/note/device/364.html

Powered by yoyo苏ICP备15045725号