码迷,mamicode.com
首页 > 其他好文 > 详细

考勤处理脚本

时间:2015-07-05 16:37:57      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:

 

 

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

 

考勤处理脚本

标签:

原文地址:http://www.cnblogs.com/endv/p/4622410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!