起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 32939|回复: 44

利用身份证读卡器收集人员信息上传到X5系统

  [复制链接]

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
发表于 2014-11-12 19:32:51 | 显示全部楼层 |阅读模式
本帖最后由 Masion 于 2015-1-20 08:54 编辑

碰到一个项目,采集出租车司机信息。基本信息通过身份证读卡器传上来,其他信息手工维护。
纯新手,通过一个星期的摸索才做出来(记在这里,防止忘记)
其他信息都好办,比较难处理的是身份证照片,照片在系统中可以存储在数据库中,也可以存在文件系统上:
1、通过blobImage存在数据库中:人员信息必须先存到数据库中,才能通过blobImage附加上照片,与业务逻辑不符,也增加录入人员无效操作工作量
具体见:
http://bbs.justep.com/thread-64288-1-1.html
2、通过attachmentImage存在服务器文档服务器中:由于浏览器不完全支持自动加载客户端文件到服务器,此办法也不可行。
具体见:
http://bbs.justep.com/thread-65397-1-1.html

后来通过高人指点,发现img标签可以在src属性中添加Bsae64码的照片就能正常显示,这样,身份证照片信息就可以像普通text一样处理了(身份证照片比较小,38k,不影响数据库性能,另外:存储在数据库中感觉更加安全鞋)。




相关的界面功能做出来放到了服务器上,点击下面的连接可以跳转            出租汽车从业人员信息采集地址
用户名: 演示
密码: 123456
进去之后点击: 出租车从业资格证管理/输入司机信息/运行

评分

参与人数 2威望 +20 +30 收起 理由
wgs7909 + 20 神马都是浮云
make + 30 赞一个!

查看全部评分

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2014-11-12 20:12:59 | 显示全部楼层
本帖最后由 Masion 于 2014-11-12 20:14 编辑
首先用SQLserver提供的数据导入导出工作将这些司机信息导入到本系统数据库新建表中(本例中为  驾驶员信息录入_主表,  ES_CasePic,其中 驾驶员信息录入_主表为身份证文本信息,ES_CasePic中存储的为身份证照片信息)
通过如下SQL语句,将司机信息(包括照片)增加到本系统表中

insert into MY_DriverBasic (fIdentityCard,fCertificationCard,fBirthDate,fBirthTown,fMinority,fStudyLevel,fAuthorizedType,
                                                        fHomeAddress,fCellphone,fEmergencyContact,fName,fPreName,fSex,fHKLocation,fMarriage,fPoliticalStatus,
                                                        fDrivingLicenseDate,fPostCode,fHomePhone,fEmergencyPhone,fServiceCard,fTrainCard,fOwnerCode,fCertificationDate,
                                                        fCurrentCredit,fDocNum,fDriverImg,fContactSchool,version, fWriteDate)

SELECT     驾驶员信息录入_主表.身份证号, 驾驶员信息录入_主表.从业资格证, 驾驶员信息录入_主表.出生日期, 驾驶员信息录入_主表.籍贯,
                      驾驶员信息录入_主表.民族, 驾驶员信息录入_主表.学历, 驾驶员信息录入_主表.准驾车型, 驾驶员信息录入_主表.家庭住址,
                      驾驶员信息录入_主表.手机号码, 驾驶员信息录入_主表.紧急联系人, 驾驶员信息录入_主表.姓名, 驾驶员信息录入_主表.曾用名,
                      驾驶员信息录入_主表.性别, 驾驶员信息录入_主表.户口所在地, 驾驶员信息录入_主表.婚姻状况, 驾驶员信息录入_主表.政治面貌,
                      驾驶员信息录入_主表.初领驾照日期, 驾驶员信息录入_主表.邮政编码, 驾驶员信息录入_主表.家庭电话, 驾驶员信息录入_主表.紧急联系电话,
                      驾驶员信息录入_主表.服务监督卡, 驾驶员信息录入_主表.培训卡号, 驾驶员信息录入_主表.服务单位代码, 驾驶员信息录入_主表.从业资格证日期,
                      驾驶员信息录入_主表.当前分值, 驾驶员信息录入_主表.司机档案号, ES_CasePic.img, 驾驶员信息录入_主表.结业学校, 1 AS version, 驾驶员信息录入_主表.从业资格证日期
FROM         驾驶员信息录入_主表 LEFT OUTER JOIN
                      ES_CasePic ON 驾驶员信息录入_主表.司机照片 = ES_CasePic.PicNo
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 1 反对 0

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2014-11-12 19:36:36 | 显示全部楼层
身份证读卡器选用的是华视电子的CVR-100U二代证读卡机具。B/S开发控件见附件
控件加载完成后,提供的数据如下:

二代身份证系统B/S读卡控件实现了以下属性和方法:
(1) 读取二代证信息方法:ReadCard()
返回值:BStr
0://读卡成功
其他表示读二代证失败,具体为失败原因
(2) 属性Name
返回值:字符串(BStr)。
Name– 卡片中储存的姓名。
如:Name= 张三
(3) 属性Sex
返回值:字符串(BStr)。
Sex– 卡片中储存的性别。取值为“男”或“女”
如:Sex = 男
(4) 属性Nation
返回值:字符串(BStr)。
Nation– 卡片中储存的民族。
如:Nation = 汉
(5) 属性Born
返回值:字符串(BStr)。
Born– 卡片中储存的出生日期。格式为: yyyy-MM-dd,长度8位
如:Born = 1982-10-10
(6) 属性Address
返回值:字符串(BStr)。
Address– 卡片中储存的地址。
如:Address = 北京市
(7) 属性CardNo
返回值:字符串(BStr)。
CardNo– 卡片中储存的身份号码。长度18位
如:CardNo = 123456789x
(8) 属性IssuedAt
返回值:字符串(BStr)。
IssuedAt– 卡片中储存的签发机关。
如:IssuedAt = 北京公安分局
(9) 属性EffectedDate
返回值:字符串(BStr)。
EffectedDate– 卡片中储存的起始有效期。格式为: yyyy.MM.dd,长度8位
如:EffectedDate = 2010.10.10
(10) 属性ExpiredDate
返回值:字符串(BStr)。
ExpiredDate – 卡片中储存的终止有效期。格式为: yyyy.MM.dd,长度8位
如:ExpiredDate = 2020.10.10
(11) 属性Pic
返回值:字符串(BStr)。
Pic– 卡片中储存的身份证头像路径。
如:Pic = c:\zp.bmp
(12) 属性SAMID
返回值:字符串(BStr)。
SAMID– 卡片中储存的安全模块号码。
如:SAMID= 0501-20041013-0000011111
(13) 属性Picture
返回值:字符串(BStr)。
Picture– jpg格式头像的Base64编码。
如:Picture = /9j/4AAQSkZJRgABAQAAAQABAAD...........
注:编码为jpg格式转换编码
(14) 属性PictureLen
返回值:数字。
PictureLen– jpg格式头像的Base64编码长度。
如:PictureLen = 2676
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 1 反对 0

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2014-11-12 19:41:42 | 显示全部楼层
本帖最后由 Masion 于 2014-11-12 20:43 编辑

人员录入界面如下图所示:
人员录入界面.PNG
身份证放到读卡器后,按扫描按钮,身份证信息(包括照片信息)就转到相应标签上,业务人员手动补充其他信息,没有问题的话,按确定按钮保存。
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2014-11-12 19:45:43 | 显示全部楼层
本帖最后由 Masion 于 2014-11-12 19:47 编辑

在页面源码中声明身份证读卡器控件:(一般是放在layout 里面)

  1. <xui:view class="xui-container" id="detailView">
  2.       <xui:layout id="layout1" style="height:100%;width:100%;position:relative;;position:relative;" type="absolute">
  3.    <OBJECT classid="clsid:10946843-7507-44FE-ACE8-2B3483D179B7"
  4.    id="CVR_IDCard" name="CVR_IDCard" width="0" height="0" >
  5.   </OBJECT>
复制代码

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2014-11-12 19:58:37 | 显示全部楼层
按扫描按钮后的js代码如下:
  1. mainActivityDetail.trigger1Click = function(event){
  2. //按扫描按钮后通过读卡器读取身份证信息
  3.   var CVR_IDCard = document.getElementById("CVR_IDCard");    //拿到ActiveX控件   
  4.   var strReadResult = CVR_IDCard.ReadCard();       //执行读卡操作
  5.   if(strReadResult == "0")           //如果读卡成功,则将身份证信息放到对应组件中
  6.   {
  7.     var dataDetail=justep.xbl("detailData");   
  8.     dataDetail.setValue("fName", CVR_IDCard.Name);     //姓名
  9.     dataDetail.setValue("fSex", CVR_IDCard.Sex);    //性别
  10.     dataDetail.setValue("fMinority", CVR_IDCard.Nation);  //民族
  11.     var str = CVR_IDCard.Born.replace("年","-").replace("月","-").replace("日","");
  12.     dataDetail.setValue("fBirthDate", str);       //出生日期
  13.     dataDetail.setValue("fHomeAddress", CVR_IDCard.Address);  //家庭住址
  14.     dataDetail.setValue("fBirthTown", CVR_IDCard.Address);   //籍贯
  15.     dataDetail.setValue("fIdentityCard", CVR_IDCard.CardNo);  //身份证号
  16.     dataDetail.setValue("fHKLocation", CVR_IDCard.IssuedAt);  //户口所在地
  17.     dataDetail.setValue("fDriverPic", CVR_IDCard.picture);   //照片,CVR_IDCard.picture里放的是照片的Base64
  18.    
  19.     document.all['image23'].src = "";
  20.     document.all['image23'].src ="data:image/bmp;base64,"+CVR_IDCard.picture; //将照片在img上显示出来(html原生img)
  21.     }
  22.                       else                 //如果读卡布成功,则抱错
  23.                       {
  24.                     alert(strReadResult);
  25.                       }
  26. };
  27. <p> </p>
复制代码

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2014-11-12 20:00:07 | 显示全部楼层
本帖最后由 Masion 于 2014-11-13 08:50 编辑

读卡器B/S控件的程序超出论坛附件限制了,下载地址如下:
http://www.chinaidcard.com/service.php?sort1=2
里面的
7
【程序下载】 CVR100U&D 二次开发包(B/S)            
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2014-11-12 20:01:38 | 显示全部楼层
所有信息填写完毕后,按保存按钮保存,与普通数据处理相同

data.saveData()
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2014-11-12 20:05:45 | 显示全部楼层
在录入界面单击“编辑”按钮,系统把该司机对应的信息从数据库中取出来:
代码如下:

  1. mainActivityDetail.windowReceiverReceive = function(event){
  2. var operator = event.data.operator;
  3. var data = justep.xbl('detailData');
  4. if (operator == "new") {
  5.   data.loadXML("");
  6.   data.newData();
  7.   document.all['image23'].src ='';
  8.   
  9. } else if (operator == "edit") {
  10.   var id = event.data.id;
  11.   data.filters.setFilter("idFilter", data.getConceptAliasName() + "='" + id + "'");
  12.   data.refreshData();
  13.     //从数据库中提取对应人员的图片
  14.   document.all['image23'].src ='';
  15.   document.all['image23'].src ="data:image/bmp;base64,"+justep.xbl("detailData").getValue("fDriverPic"); //将图片的Base64如此赋值给img的src属性,img就能显示该图片
  16. }
  17. };
  18. <p> </p>
复制代码

长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2014-11-12 20:08:28 | 显示全部楼层
到此,身份证照片信息的显示,上传,下载全部完成。
还有一个小问题,客户已经用原有系统存储了司机信息,其中身份证照片是用二进制信息存储在SQLserver2005中,如何将这些照片信息批量的转换到新系统中呢。
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-21 21:24 , Processed in 0.053058 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表