zoukankan      html  css  js  c++  java
  • 考勤处理脚本

      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 };
  • 相关阅读:
    CentOS虚拟机和物理机共享文件夹实现
    集训第六周 数学概念与方法 概率 数论 最大公约数 G题
    集训第六周 数学概念与方法 概率 F题
    集训第六周 E题
    集训第六周 古典概型 期望 D题 Discovering Gold 期望
    集训第六周 古典概型 期望 C题
    集训第六周 数学概念与方法 UVA 11181 条件概率
    集训第六周 数学概念与方法 UVA 11722 几何概型
    DAG模型(矩形嵌套)
    集训第五周 动态规划 K题 背包
  • 原文地址:https://www.cnblogs.com/endv/p/4622410.html
Copyright © 2011-2022 走看看