考勤处理脚本

  1 int init_win()
  2 {
  3   return 1;
  4 };
  5
  6 int load_ext()
  7 {
  8     //显示记录时执行
  9     //
 10   return 1;
 11 };
 12
 13 int show_row_ext()
 14 {
 15     dbg(‘------------------------------------------‘);
 16     dbg(‘开始: ‘ + emp_name + ‘ 的 ‘ + class_date_fmt + ‘ 的考勤检查‘);
 17
 18     //如果是请假的话,设置统计天数为1
 19     if (process_result == ‘E‘) {
 20         n2 = 1;
 21         return 1;
 22     }
 23
 24     //如果是出差的话,设置统计天数为1
 25     if (process_result == ‘F‘) {
 26         n2 = 1;
 27         return 1;
 28     }
 29
 30     if (note_info != ‘‘) {
 31         dbg(‘当天已处理过 | 当天由系统自动处理,停止检查‘);
 32         dbg(‘备注信息:‘ + note_info + ‘ . 打卡记录:‘ + on_time + ‘. 出勤天数: ‘ + n2);
 33         return 1;
 34     }
 35
 36     string ss1;
 37     int not_find;
 38     not_find = -1;
 39
 40     //显示每一条记录时执行
 41     //一共10个刷卡点,其中0为后勤点,1、3、9为午班刷卡点,2、4、5、6、7、8为野外刷卡点
 42     //考勤地点:A、后勤区 | B 午班区 | C 野外区
 43     //n1 打卡地点-打卡班次 n2 打卡天数
 44     //得到员工当天的打卡记录
 45
 46     //提前和推迟的小时数
 47     int time_dq_hour,time_tc_hour;
 48     time_dq_hour = 0; //不得大于野外标准开始小时数
 49     time_tc_hour = 0; //标准小时数 + 推迟 不得大于24
 50
 51     num rec_day; //打卡天数
 52     rec_day = 0;
 53
 54     //野外的开始和结束标准时间
 55     int time_yw_beg,time_yw_end;
 56     time_yw_beg = 7 - time_dq_hour;
 57     time_yw_end = 19 + time_tc_hour;
 58
 59     //后勤上午开始结束时间
 60     int time_hq_s_beg,time_hq_s_end;
 61     time_hq_s_beg = 8 - time_dq_hour;
 62     time_hq_s_end = 9 + time_tc_hour;
 63
 64     //后勤下午开始结束时间
 65     int time_hq_x_beg,time_hq_x_end;
 66     time_hq_x_beg = 14 - time_dq_hour;
 67     time_hq_x_end = 15 + time_tc_hour;
 68
 69     //午班上午开始结束时间
 70     int time_jd_s_beg,time_jd_s_end;
 71     time_jd_s_beg = 8 - time_dq_hour;
 72     time_jd_s_end = 9 + time_tc_hour;
 73
 74     //午班下午开始结束时间
 75     int time_jd_x_beg,time_jd_x_end;
 76     time_jd_x_beg = 14 - time_dq_hour;
 77     time_jd_x_end = 15 + time_tc_hour;
 78
 79     //周几 周1-周7
 80     int week_day;
 81     week_day = get_week_id(class_date);
 82
 83     string sql;
 84     sql = "select card_no,mark_date,mark_time,add_cause from timer_original_rec where mark_date =‘" + class_date + "‘ and card_no = ‘" + card_no +"‘ order by mark_date,mark_time";
 85
 86     db_run(sql);
 87     int row_count;
 88     row_count = db_row_count();
 89
 90     if (row_count > 0) {
 91         //db_show();
 92         dbg(‘当天共有‘ + row_count + ‘条打卡记录‘);
 93
 94         int s_finish;//检测完成
 95         s_finish = 0;
 96
 97         int mark_time_hour;
 98         mark_time_hour = 0;
 99
100         int i;
101         for (i = 0; i < row_count; i++) {
102             dbg(‘第‘ + (i + 1) + ‘条记录‘);
103             //dbg(‘检测提前中止:‘ + s_finish);
104
105             mark_time_hour = str_get_sub(db_res(2),0,2);
106             dbg(‘打卡小时‘ + mark_time_hour);
107
108             if(s_finish == 1){
109                 break;
110             }
111
112             switch(db_res(3)){
113                 //野外优先 07-19
114                 //最小计数1天
115                 case ‘2‘:
116                 case ‘4‘:
117                 case ‘5‘:
118                 case ‘6‘:
119                 case ‘7‘:
120                 case ‘8‘:
121                     dbg(‘当前出勤IP:‘  + db_res(3) + ‘ - 野外‘);
122                     note_info += ‘野外班次 |‘;
123                     //得到时间,判断考勤时间是否在有效时间段内
124                     if (mark_time_hour >= time_yw_beg && mark_time_hour <= time_yw_end) {
125                         rec_day = 1;
126                         ss1 = ‘野外‘;
127                         //中止继续检测
128                         s_finish = 1;
129                     }else{
130                         dbg(‘不在有效的打卡时间段内‘);
131                     }
132                     break;
133                 //午班 08-09 14-15
134                 case ‘1‘:
135                 case ‘3‘:
136                 case ‘9‘:
137                     dbg(‘当前出勤IP:‘  + db_res(3) + ‘ - 午班‘);
138                     note_info += ‘午班班次 | ‘;
139
140                     if (!(week_day == 2 || week_day == 4)) {
141                         //得到时间,判断考勤时间是否在有效时间段内
142                         //最小计数0.5,上午一次,下午一次
143                         if ((mark_time_hour >= time_jd_s_beg && mark_time_hour <= time_jd_s_end) || (mark_time_hour >= time_jd_x_beg && mark_time_hour <= time_jd_x_end)) {
144                             rec_day += 0.5;
145                         }else{
146                             dbg(‘不在有效的打卡时间段内‘);
147                         }
148                     }else{
149                         //周2周4,只需要打卡1次
150                         if ((mark_time_hour >= time_jd_s_beg && mark_time_hour <= time_jd_s_end) || (mark_time_hour >= time_jd_x_beg && mark_time_hour <= time_jd_x_end)) {
151                             rec_day = 1;
152                             ss1 = ‘午班‘;
153                         }else{
154                             dbg(‘不在有效的打卡时间段内‘);
155                         }
156                     }
157
158                     //午班优先-补贴
159                     dbg(‘找寻午班的位置:‘ + str_pos(note_info,‘午班‘));
160                     if (str_pos(note_info,‘午班‘) != not_find) {
161                         ss1 = ‘午班‘;
162                     }
163
164                     if (rec_day == 1) {
165                         s_finish = 1;
166                     }
167
168                     break;
169                 //后勤 08-09 14-15
170                 case ‘0‘:
171                     dbg(‘当前出勤IP:‘  + db_res(3) + ‘ - 后勤‘);
172                     note_info += ‘后勤班次 |‘;
173                     //是否周2|周4
174                     if (!(week_day == 2 || week_day == 4)) {
175                         //得到时间,判断考勤时间是否在有效时间段内
176                         //最小计数0.5,上午一次,下午一次
177                         if ((mark_time_hour >= time_hq_s_beg && mark_time_hour <= time_hq_s_end) || (mark_time_hour >= time_hq_x_beg && mark_time_hour <= time_hq_x_end)) {
178                             rec_day += 0.5;
179                         }else{
180                             dbg(‘不在有效的打卡时间段内‘);
181                         }
182                     }else{
183                         //周2周4,只需要打卡1次
184                         if ((mark_time_hour >= time_hq_s_beg && mark_time_hour <= time_hq_s_end) || (mark_time_hour >= time_hq_x_beg && mark_time_hour <= time_hq_x_end)) {
185                             rec_day = 1;
186                             ss1 = ‘后勤‘;
187                         }else{
188                             dbg(‘不在有效的打卡时间段内‘);
189                         }
190                     }
191
192                     //午班优先-补贴
193                     if (str_pos(note_info,‘午班‘) != not_find) {
194                         ss1 = ‘午班‘;
195                     }
196
197                     if (rec_day == 1) {
198                         s_finish = 1;
199                     }
200                     break;
201             }
202             db_next();
203         }
204         s1 = ss1;
205         //结果
206         switch(rec_day){
207             case 0.5:
208                 n2 = rec_day;
209                 break;
210             case 1:
211                 process_result = ‘‘;
212                 process_result_name = ‘‘;
213                 n2 = rec_day;
214                 break;
215         }
216
217         dbg(‘------------------------------------------‘);
218     }else{
219         dbg(‘没有打卡记录‘);
220         dbg(‘------------------------------------------‘);
221     }
222
223   return 1;
224 };
225
226 int row_change_ext()
227 {
228   return 1;
229 };
230
231 int show_detail_row_ext()
232 {
233   return 1;
234 };
235
236 int main()
237 {
238   return 1;
239 };
时间: 2024-10-11 07:33:15

考勤处理脚本的相关文章

[原创软件]考勤数据导出工具

软件主要功能: 1.显示考勤机数据 2.根据时间导出考勤数据 3.自动定时加载Python脚本,执行加工处理并上传服务器 2016.11.22 v1.4 功能更新: 1.增加考勤机设置配置 2.增加密码设置 BUG修复: 1.修复了若干BUG 2016.8.3 v1.3 功能更新: 1.增加自动运行脚本路径配置 2.增加运行时间设置 3.可勾选是否定时运行.后台运行等配置 4.时间选择窗最大可选日期为今日 BUG修复: 1.修复了若干BUG 2016.8.1 v1.2 功能更新: 1.增加时间选

导出ERP本月的考勤记录

1 from selenium import webdriver 2 from selenium.webdriver.common.by import By 3 import time 4 5 time_start=time.time() 6 7 8 #default setting of firefox 9 import os 10 fp = webdriver.FirefoxProfile() 11 fp.set_preference("browser.download.folderList

【HTML5】用脚本控制交互元素details元素的使用

1.源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Con

AD 脚本kixtart运用之三(添加windows共享打印机)

在http://windyma.blog.51cto.com/661702/1967027文章,已做好用户脚本基础上 在脚本文件kixtart.kix里添加如下内容: --------------------------------------- IF INGROUP ("Color_Printer") If AddPrinterConnection ("\\zsprinter.nccn.int\NEO-Color-Printer") = 0 ? "Add

WEB页面,WEB环境版本,数据库,整站备份脚本

#!/bin/bash # #WEB页面,WEB环境版本,数据库,整站备份脚本 #当发生某个原因导致整个服务器无法恢复时,利用上面备份的相关数据即可重做一台一样的服务器 date_a=`date +%Y%m%d-%H%M%S` mkdir -p /web_bak/${date_a}/conf &> /dev/null mkdir -p /web_bak/${date_a}/web &> /dev/null mkdir -p /web_bak/${date_a}/mysql &a

windows PAC脚本解析的软件 pac syntax检查

参考文档: https://zhuanlan.zhihu.com/p/22166179?refer=barretlee https://github.com/pacparser/pacparser https://community.mcafee.com/thread/47557?tstart=0 动态在线检查网页测试i: http://home.thorsen.pm/proxyforurl 安装步骤参考: 环境(centos6.7 python环境默认2.6 2.7 都可以) https://

20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)

扩展: select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 20.5 Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 1. 创建if1.sh测试脚本: [[email protected] ~]# vi if1.sh a=5,如果a大于3,满足这个条件,显示ok 添加内容: #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi 2. 执行if1.sh脚本: [[e

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种:

AD 脚本kixtart运用之四(用户桌面背景)

在http://windyma.blog.51cto.com/661702/1967027文章,已做好用户脚本基础上进行设置 首先设置用户背景桌面是微软件的Bginfo工具,而kixtart只是用来获取用户屏幕的分辨率,根据不同屏幕的分辨率再来调用Bginfo工具来设置不同分辨率的背景图片,以此保证图片不会变形. 第一,在域\\nccn.int\NETLOGON 共享下新建Bginfo目录,把Bginfo.exe工具及不同分辨率的背景图全复制到Bginfo目录下. 第二,用Bginfo.exe工