def displayScheduleResult(self, resultList, startDate): personalWorkDayDict = list() personalWorkDayLengthList = list() dailyAttendenceDict = dict() for result in resultList: calendar = result[0] workers = result[1] group = result[2] try: workdayDict = Scheduler.getWorkDayForEachWorker(calendar, workers) for (workIndex, workDayList) in workdayDict.items(): workDayList = list(map(int, workDayList)) workDayList.sort() weeklyWorkDayList = list() week = 1 startIndex = 0 for dateIndex in range(len(workDayList)): if int(workDayList[dateIndex]) > week * 7: weeklyWorkDayList.append( list( map(lambda date: date % 7 if date % 7 != 0 else 7, workDayList[startIndex: dateIndex]))) startIndex = dateIndex week += 1 if startIndex < len(workDayList): weeklyWorkDayList.append( list(map(lambda date: date % 7 if date % 7 != 0 else 7, workDayList[startIndex: len(workDayList)]))) personalWorkDayDict.append([workers[workIndex], group.groupName, weeklyWorkDayList]) personalTotalWorkDay = Scheduler.calculateWorkDayPerWorker(calendar) for i in range(len(workers)): personalWorkDayLengthList.append( [workers[i], group.groupName, str(personalTotalWorkDay.get(i, 0)), str(personalTotalWorkDay.get(i, 0) * int(group.workHour))]) # # 添加平均数行 # avgWorkDayNum = math.ceil(float(len(calendar.keys())) * int( # group.workLoad) / len( # workers)) # avgWorkHour = avgWorkDayNum * int(group.workHour) # workDayData.append([u'平均出勤天数', str(avgWorkDayNum), str(avgWorkHour)]) for keyValuePair in sorted(calendar.items(), key=lambda d: int(d[0])): currentDate = TimeUtil.getFormatedDate(startDate, int(keyValuePair[0]) - 1) currentDateArrange = dailyAttendenceDict.get(currentDate, list()) currentDateArrange.append( [", ".join(map(str, map(lambda index: workers[index], keyValuePair[1]))), group]) dailyAttendenceDict[currentDate] = currentDateArrange except Exception as e: wx.MessageBox(u'出错啦: ' + str(e)) # 按日期排序 dailyAttendenceList = sorted(dailyAttendenceDict.items(), key=lambda d: d[0]) self.exportData = [personalWorkDayDict, dailyAttendenceList, personalWorkDayLengthList, startDate] self.updateGrid(personalWorkDayLengthList) self.updateGrid1(personalWorkDayDict, startDate) self.updateGrid2(dailyAttendenceList)