• 考勤处理脚本


      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 };
  • 相关阅读:
    hdu 3496
    poj 2374
    zoj 3399
    poj 1321
    sgu 365
    hdu 3555
    poj 3345
    poj 2355
    Android重命名文件
    在workflow中传值的sample
  • 原文地址:https://www.cnblogs.com/endv/p/4622410.html
Copyright © 2020-2023  润新知