new_sum_info.append(sum_line) return new_sum_info if __name__ == "__main__": # 算法演示 d = DetailInfo() TECID = "2004643" COURSEID = "51610145" DETAILFAILENAME = "../outputdemo/" + TECID + "_" + COURSEID + "_1_checkinDetail.csv" SUMFAILENAME = "../outputdemo/" + TECID + "_" + COURSEID + "_sum.csv" print DETAILFAILENAME all_detail_info = d.get_all_detail_info(DETAILFAILENAME) print all_detail_info stuids = ['201416920104', '201416920405', '201416920217', '201416920105', '201416920102'] print stuids # step1 STARTTIME = "2017-05-26 19:54:20" for detail_line in all_detail_info: d.set_detail_result(detail_line, STARTTIME) # detail转sum算法setp2 new_sum_info = d.detail_sum(all_detail_info, stuids, "1") print new_sum_info # 将转化后的结果写入sum文件 s = SumInfo() all_sum_info = s.sum_creat(stuids) print all_sum_info all_sum_info = s.sum_update(new_sum_info, all_sum_info, "Checkin1") print all_sum_info s.write_file(all_sum_info, SUMFAILENAME)
class UpdateSum(object): def __init__(self): self.seq = SeqInfo() self.course = CourseInfo() self.stu = StuInfo() self.sum = SumInfo() self.detail = DetailInfo() # 传入参数 tec_id, course_id, seq_id # 从seq表中获取本次的starttime, 需要附加文件名,seq_filename # 获取所有学生的名单,需要附加文件名,course_filename,stu_filename # 通过detail类的两个方法获得所有学生的考勤结果 # 获取sum表的文件名 # 若seq_id==1,需要初始化sum表 # 按学生考勤结果更新入sum表 def update_sum(self, tec_id, course_id, seq_id, course_filename, stu_filename, seq_filename): starttime = self.get_tec_start_time(tec_id, course_id, seq_id, seq_filename) stuids = self.get_all_stuids(tec_id, course_id, course_filename, stu_filename) sumfilename = self.sum.set_sum_filename(tec_id, course_id) if starttime and stuids and sumfilename: # 获得所有学生的考勤结果 detail_filename = self.detail.set_detail_filename( tec_id, course_id, seq_id) all_detail_info = self.detail.get_all_detail_info(detail_filename) for detail_line in all_detail_info: self.detail.set_detail_result(detail_line, starttime) new_sum_line = self.detail.detail_sum(all_detail_info, stuids, seq_id) # 更新sum if os.path.exists(sumfilename): pass else: # 初始化sum表 new_sum_info = self.sum.sum_creat(stuids) self.sum.write_file(new_sum_info, sumfilename) all_sum_info = self.sum.get_all_sum_info(sumfilename) new_sum_info = self.sum.sum_update(new_sum_line, all_sum_info, seq_id) self.sum.write_file(new_sum_info, sumfilename) else: print "您输入的内容有误,请检查后重新操作" # 获取教师发起考勤时间 def get_tec_start_time(self, tec_id, course_id, seq_id, seq_filename): all_seq_info = self.seq.get_all_seq_info(seq_filename) if self.seq.check_seq_id(tec_id, course_id, seq_id, all_seq_info): start_time = self.seq.get_start_time(tec_id, course_id, seq_id, all_seq_info) if start_time: return start_time else: return None else: print "您输入的考勤次序号错误" return None # 获取所有学生的名单 def get_all_stuids(self, tec_id, course_id, course_filename, stu_filename): all_course_info = self.course.get_all_course_info(course_filename) classnums = self.course.get_classnames(tec_id, course_id, all_course_info) all_stu_info = self.stu.get_all_stu_info(stu_filename) stu_ids = self.stu.get_stuids( self.stu.get_wait_checkin_stu_info(classnums, all_stu_info)) if stu_ids: return stu_ids else: return None # 遍历seq表,获取所有detail表,更新sum表 def update_all_sum(self, COURSEFILENAME, STUFILENAME, SEQFILENAME): all_seq_info = self.seq.get_all_seq_info(SEQFILENAME) for seq_line in all_seq_info: tec_id = seq_line["TeacherID"] course_id = seq_line["CourseID"] seq_id = seq_line["SeqID"] self.update_sum(tec_id, course_id, seq_id, COURSEFILENAME, STUFILENAME, SEQFILENAME)