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 };