博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
考勤处理脚本
阅读量:7025 次
发布时间:2019-06-28

本文共 7416 字,大约阅读时间需要 24 分钟。

 

 

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-19114                 //最小计数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-15134                 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-15170                 case '0':171                     dbg('当前出勤IP:'  + db_res(3) + ' - 后勤');172                     note_info += '后勤班次 |';173                     //是否周2|周4174                     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 };

 

转载地址:http://agoxl.baihongyu.com/

你可能感兴趣的文章
Redis 分布式锁的正确实现方式( Java 版 )
查看>>
利用 Composer 一步一步构建自己的 PHP 框架(四)——使用 ORM
查看>>
PHP的错误级别
查看>>
python的tkinter同时呈现两个窗口
查看>>
重构_改善既有的代码设计(三)
查看>>
开场白
查看>>
MySQL内存表的弊端
查看>>
Mongo的Replica Sets (复制集)的配置全过程和心得体会
查看>>
IDEA14 神秘代码生成器
查看>>
开始新的系列,Glide的基本用法
查看>>
【转】Java虚拟机(JVM)中的内存设置详解
查看>>
关于Java对象的继承和多态学习笔记
查看>>
搭建 WordPress 个人博客
查看>>
mysql增加新用户无法登陆解决方法
查看>>
个人人民币定期存款-存本取息Personal CNY Time Deposit – Schedule
查看>>
赴日软件工程师之路
查看>>
Java实现 数字签名
查看>>
设计模式 之 适配器模式
查看>>
单点登录的设计,从单域名到多域名(经验分享)
查看>>
淘宝SOA框架dubbo学习(6)--回声测试
查看>>