考勤处理脚本
2015-07-05 15:59
375 查看
int init_win() { return 1; }; int load_ext() { //显示记录时执行 // return 1; }; int show_row_ext() { dbg('------------------------------------------'); dbg('开始: ' + emp_name + ' 的 ' + class_date_fmt + ' 的考勤检查'); //如果是请假的话,设置统计天数为1 if (process_result == 'E') { n2 = 1; return 1; } //如果是出差的话,设置统计天数为1 if (process_result == 'F') { n2 = 1; return 1; } if (note_info != '') { dbg('当天已处理过 | 当天由系统自动处理,停止检查'); dbg('备注信息:' + note_info + ' . 打卡记录:' + on_time + '. 出勤天数: ' + n2); return 1; } string ss1; int not_find; not_find = -1; //显示每一条记录时执行 //一共10个刷卡点,其中0为后勤点,1、3、9为午班刷卡点,2、4、5、6、7、8为野外刷卡点 //考勤地点:A、后勤区 | B 午班区 | C 野外区 //n1 打卡地点-打卡班次 n2 打卡天数 //得到员工当天的打卡记录 //提前和推迟的小时数 int time_dq_hour,time_tc_hour; time_dq_hour = 0; //不得大于野外标准开始小时数 time_tc_hour = 0; //标准小时数 + 推迟 不得大于24 num rec_day; //打卡天数 rec_day = 0; //野外的开始和结束标准时间 int time_yw_beg,time_yw_end; time_yw_beg = 7 - time_dq_hour; time_yw_end = 19 + time_tc_hour; //后勤上午开始结束时间 int time_hq_s_beg,time_hq_s_end; time_hq_s_beg = 8 - time_dq_hour; time_hq_s_end = 9 + time_tc_hour; //后勤下午开始结束时间 int time_hq_x_beg,time_hq_x_end; time_hq_x_beg = 14 - time_dq_hour; time_hq_x_end = 15 + time_tc_hour; //午班上午开始结束时间 int time_jd_s_beg,time_jd_s_end; time_jd_s_beg = 8 - time_dq_hour; time_jd_s_end = 9 + time_tc_hour; //午班下午开始结束时间 int time_jd_x_beg,time_jd_x_end; time_jd_x_beg = 14 - time_dq_hour; time_jd_x_end = 15 + time_tc_hour; //周几 周1-周7 int week_day; week_day = get_week_id(class_date); string sql; 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"; db_run(sql); int row_count; row_count = db_row_count(); if (row_count > 0) { //db_show(); dbg('当天共有' + row_count + '条打卡记录'); int s_finish;//检测完成 s_finish = 0; int mark_time_hour; mark_time_hour = 0; int i; for (i = 0; i < row_count; i++) { dbg('第' + (i + 1) + '条记录'); //dbg('检测提前中止:' + s_finish); mark_time_hour = str_get_sub(db_res(2),0,2); dbg('打卡小时' + mark_time_hour); if(s_finish == 1){ break; } switch(db_res(3)){ //野外优先 07-19 //最小计数1天 case '2': case '4': case '5': case '6': case '7': case '8': dbg('当前出勤IP:' + db_res(3) + ' - 野外'); note_info += '野外班次 |'; //得到时间,判断考勤时间是否在有效时间段内 if (mark_time_hour >= time_yw_beg && mark_time_hour <= time_yw_end) { rec_day = 1; ss1 = '野外'; //中止继续检测 s_finish = 1; }else{ dbg('不在有效的打卡时间段内'); } break; //午班 08-09 14-15 case '1': case '3': case '9': dbg('当前出勤IP:' + db_res(3) + ' - 午班'); note_info += '午班班次 | '; if (!(week_day == 2 || week_day == 4)) { //得到时间,判断考勤时间是否在有效时间段内 //最小计数0.5,上午一次,下午一次 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)) { rec_day += 0.5; }else{ dbg('不在有效的打卡时间段内'); } }else{ //周2周4,只需要打卡1次 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)) { rec_day = 1; ss1 = '午班'; }else{ dbg('不在有效的打卡时间段内'); } } //午班优先-补贴 dbg('找寻午班的位置:' + str_pos(note_info,'午班')); if (str_pos(note_info,'午班') != not_find) { ss1 = '午班'; } if (rec_day == 1) { s_finish = 1; } break; //后勤 08-09 14-15 case '0': dbg('当前出勤IP:' + db_res(3) + ' - 后勤'); note_info += '后勤班次 |'; //是否周2|周4 if (!(week_day == 2 || week_day == 4)) { //得到时间,判断考勤时间是否在有效时间段内 //最小计数0.5,上午一次,下午一次 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)) { rec_day += 0.5; }else{ dbg('不在有效的打卡时间段内'); } }else{ //周2周4,只需要打卡1次 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)) { rec_day = 1; ss1 = '后勤'; }else{ dbg('不在有效的打卡时间段内'); } } //午班优先-补贴 if (str_pos(note_info,'午班') != not_find) { ss1 = '午班'; } if (rec_day == 1) { s_finish = 1; } break; } db_next(); } s1 = ss1; //结果 switch(rec_day){ case 0.5: n2 = rec_day; break; case 1: process_result = ''; process_result_name = ''; n2 = rec_day; break; } dbg('------------------------------------------'); }else{ dbg('没有打卡记录'); dbg('------------------------------------------'); } return 1; }; int row_change_ext() { return 1; }; int show_detail_row_ext() { return 1; }; int main() { return 1; };
相关文章推荐
- php超快高效率统计大文件行数
- 为什么C++编译器不能支持对模板的分离式编译
- 转:char*, char[] ,CString, string的转换
- 框架
- SPOJ QTREE2 lct
- Matlab聚类分析[转]
- [转]Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案
- A + B Again 2057 有符号的64进位的运算
- 主机规划与磁盘分区
- 数据库-基本概念
- Selenium_WebDriver登录模拟鼠标移动切换窗口等操作练习(cssSelector初练手)_Java
- SQL Server 2008 收缩清空大日志文件方法总结
- javaweb学习总结(十五)——JSP基础语法
- 字符串连接
- Beginning HOOK
- SpringBoot笔记一
- 用异或操作实现的交换函数用以实现数组逆置中需要注意的问题
- shape 代码生成器
- 欢迎使用CSDN-markdown编辑器
- U4初步使用整理(四)Pawn简单操作