只有U盘导出数据的考勤机二次开发日记

单位最近新买了一套指科密纹考勤机。

由于种种原因。买了个功能很少的。只有U盘可以导出数据的考勤机。

前几天领导说,要统计上个月15日到这个月15日的考勤数据。

研究了好久,发现只能按月导出报表!

问领导拿1日到31日的是否可以。领导说工资是算15日的。我那个内牛满面啊。。。。

 

 

不过好在以前做过考勤机的二次开发。算是有点熟悉。还好自己也算是写过N年代码的老司机了,这个东西还难不倒我。

 

===========开发思路=============

因为U盘能导出数据。同时也能导出所有的考勤记录。

有这些记录,我就有希望把它导入到数据库,然后进行各种统计和筛选。之后想要怎么统计,都随便了。

 

===========开发过程==============

1、导出打卡数据

打开考勤机,插入U盘。然后操作导出我需要的时段的打卡记录。(导出的名字是agl_000001.txt 我导出另外一个打卡机名字也是类似aglXXXX.txt)

agl_000001.txt 的内容格式大概是这样的。

No Mchn EnNo Name Mode IOMd DateTime

000001 1 0000000003 名字1              020 001 2016/10/01  07:53:57

000002 1 0000000039               020 001 2016/10/01  07:55:10

000003 1 0000000040               001 001 2016/10/01  07:57:07

000004 1 0000000037              001 001 2016/10/01  08:03:31

000005 1 0000000020               001 001 2016/10/01  08:03:40

 

简单写了个读取程序。用tab进行分割。

很顺利,它的内容格式确实是这个。

000001(自增ID) 1(考勤机编号) 0000000003(人员编号) 名字1(人员名字)              020(不知道是啥) 001(不知道是啥) 2016/10/01  07:53:57(考勤时间)

 

对我来说,我只需要人员编号、考勤时间。就足够我的要求了。

然后拿了另外一台没有写牌子的考勤机,也导出了一下数据,哈哈,格式居然是一样的。猜想可能基本上的考勤机都可以通用吧。以后随便人家买什么牌子的了。

 

2、数据处理

 

我需要自己重新写一套计算打卡和迟到早退的算法。

最大的问题在于如何判断上班还是下班时间。采用了打卡时间段的方法。

上午上班打卡时间6:00——10:00之间的都算上班打卡

10:01——13:00 都算下班打卡。以此类推,就能很好的区分上下班时间。

假设上午上班时间8:00

6:00——8:00 打卡都算正常签到

8:01——10:00 打卡都算迟到

 

由于领导有些特殊要求

如果一天都没打卡算旷工。有打卡都算有来上班。

上午下班不用打卡。

周六上半天班,周六上午下班要打卡。

所以又写了一些规则进去。

 

3、大功告成

上班时杂事比较多,断断续续的弄了几天,终于写完了,验证一下数据。抽取了一个人员进行测试。

 

配置的时间规则如下:

<!--起始日期-->

    <add key="dateStart" value="2016-10-1"/>

    <!--结束日期-->

    <add key="dateEnd" value="2016-10-14"/>

    

    <!--上午上班打卡起始时间-->

    <add key="Time11" value="3:00"/>

    <!--上午上班时间-->

    <add key="Time12" value="8:10"/>

    <!--上午上班打卡结束时间-->

    <add key="Time13" value="10:30"/>

 

    <!--上午下班打卡起始时间-->

    <add key="Time21" value="10:31"/>

    <!--上午下班时间-->

    <add key="Time22" value="11:29"/>

    <!--上午下班打卡结束时间-->

    <add key="Time23" value="12:30"/>

 

    <!--下午上班打卡起始时间-->

    <add key="Time31" value="13:00"/>

    <!--下午上班时间   14:30 15:00 -->

    <add key="Time32" value="14:30"/>

    <!--下午上班打卡结束时间-->

    <add key="Time33" value="16:00"/>

 

    <!--下午下班打卡起始时间-->

    <add key="Time41" value="16:30"/>

    <!--下午下班时间  17:29   17:59 -->

    <add key="Time42" value="17:29"/>

    <!--下午下班打卡结束时间-->

    <add key="Time43" value="23:00"/>

 

只有U盘导出数据的考勤机二次开发日记 - 书亚工作室 - 书亚工作室

 

通过跟踪断点,进行一个一个验证。

 

4、写在最后

由于我们单位的规则比较特别,如果您的需求和我这边一样。这个小软件就送您了。

假如不一样,您有需要特别定制的,欢迎联系我 Joshua_Studio@163.COM 。

但是事先声明,定制是收费的哈。

最后附上程序。

http://u.163.com/dQu7dmYb  提取码: EJu0Z83s

展开阅读全文

没有更多推荐了,返回首页