def schedule_init_commit(): # print request.json['year'], request.json['month'], request.json['staff'] year = int(request.json['year']) month = int(request.json['month']) if month == 1: start = datetime.date(year-1, 12, 26) else: start = datetime.date(year, month-1, 26) days = rrule(DAILY, dtstart=start, until=datetime.date(year, month, 25)).count() #staff [u'1,张三,12-26,1', u'2,李四,12-27,1', u'3,王五,12-28,1', u'4,候六,12-29,1', u'5,孟七,12-26,2'] # 排班处理 separator = ',' for staff in request.json['staff']: day = [0 for i in xrange(1, days+1)] # 数组初值0,代表全月休息 id, name, start_date, type = staff.split(',') if int(type) == 1: # 1轮班,2白班 start_date_m, start_date_d = start_date.split('-') if month == 1: start_day_id = rrule(DAILY, dtstart=start, \ until=datetime.date(year-1, int(start_date_m), int(start_date_d))).count() else: start_day_id = rrule(DAILY, dtstart=start, \ until=datetime.date(year, int(start_date_m), int(start_date_d))).count() # 排班算法,4人2班,对4求余 ''' if start_day_id == 1: for i in xrange(1, days+1): day[i-1] = (i % 4) if (i % 4) in [1, 2] else 0 elif start_day_id == 2: for i in xrange(1, days+1): day[i-1] = ((i - 1) % 4) if ((i - 1) % 4) in [1, 2] else 0 elif start_day_id == 3: for i in xrange(2, days+1): day[i-1] = ((i - 2) % 4) if ((i - 2) % 4) in [1, 2] else 0 elif start_day_id == 4: day[0] = 2 for i in xrange(3, days+1): day[i-1] = ((i - 3) % 4) if ((i - 3) % 4) in [1, 2] else 0 ''' # 排班算法, 6人2班, 对6求余, 余2晚班, 余4晚班, 余1早班 if start_day_id == 1: for i in xrange(1, days+1): if (i % 6) == 1: day[i-1] = 1 if (i % 6) in [2, 4]: day[i-1] = 2 elif start_day_id == 2: for i in xrange(1, days+1): if ((i -1) % 6) == 1: day[i-1] = 1 if ((i -1) % 6) in [2, 4]: day[i-1] = 2 elif start_day_id == 3: for i in xrange(2, days+1): if ((i -2) % 6) == 1: day[i-1] = 1 if ((i -2) % 6) in [2, 4]: day[i-1] = 2 elif start_day_id == 4: day[0]=2 for i in xrange(3, days+1): if ((i -3) % 6) == 1: day[i-1] = 1 if ((i -3) % 6) in [2, 4]: day[i-1] = 2 elif start_day_id == 5: day[1] = 2 for i in xrange(4, days+1): if ((i -4) % 6) == 1: day[i-1] = 1 if ((i -4) % 6) in [2, 4]: day[i-1] = 2 elif start_day_id == 6: day[0], day[2] = 2, 2 for i in xrange(5, days+1): if ((i -5) % 6) == 1: day[i-1] = 1 if ((i -5) % 6) in [2, 4]: day[i-1] = 2 else: for i, v in enumerate(rrule(DAILY, dtstart=start, until=datetime.date(year, month, 25))): if v.weekday() in [0, 1, 2, 5, 6]: day[i] = 1 #保存数据库 schedule = Schedule() schedule.name = name schedule.year = year schedule.month = month schedule.days = days schedule.type = type schedule.list = separator.join([str(i) for i in day]) schedule.morning = 0 if len([i for i in day if i == 1]) == 0 else len([i for i in day if i == 1]) schedule.evening = len([i for i in day if i == 2]) schedule.rest = 0 schedule.overtime = 0 schedule.updated_user = current_user.name schedule.updated_time = datetime.datetime.now() schedule.updated_count = 0 db.session.add(schedule) db.session.commit() return jsonify(json=True)
def schedule_init_commit(): # print request.json['year'], request.json['month'], request.json['staff'] year = int(request.json['year']) month = int(request.json['month']) if month == 1: start = datetime.date(year - 1, 12, 26) else: start = datetime.date(year, month - 1, 26) days = rrule(DAILY, dtstart=start, until=datetime.date(year, month, 25)).count() #staff [u'1,张三,12-26,1', u'2,李四,12-27,1', u'3,王五,12-28,1', u'4,候六,12-29,1', u'5,孟七,12-26,2'] # 排班处理 separator = ',' for staff in request.json['staff']: day = [0 for i in xrange(1, days + 1)] # 数组初值0,代表全月休息 id, name, start_date, type = staff.split(',') if int(type) == 1: # 1轮班,2白班 start_date_m, start_date_d = start_date.split('-') if month == 1: start_day_id = rrule(DAILY, dtstart=start, \ until=datetime.date(year-1, int(start_date_m), int(start_date_d))).count() else: start_day_id = rrule(DAILY, dtstart=start, \ until=datetime.date(year, int(start_date_m), int(start_date_d))).count() # 排班算法,4人2班,对4求余 ''' if start_day_id == 1: for i in xrange(1, days+1): day[i-1] = (i % 4) if (i % 4) in [1, 2] else 0 elif start_day_id == 2: for i in xrange(1, days+1): day[i-1] = ((i - 1) % 4) if ((i - 1) % 4) in [1, 2] else 0 elif start_day_id == 3: for i in xrange(2, days+1): day[i-1] = ((i - 2) % 4) if ((i - 2) % 4) in [1, 2] else 0 elif start_day_id == 4: day[0] = 2 for i in xrange(3, days+1): day[i-1] = ((i - 3) % 4) if ((i - 3) % 4) in [1, 2] else 0 ''' # 排班算法, 6人2班, 对6求余, 余2晚班, 余4晚班, 余1早班 if start_day_id == 1: for i in xrange(1, days + 1): if (i % 6) == 1: day[i - 1] = 1 if (i % 6) in [2, 4]: day[i - 1] = 2 elif start_day_id == 2: for i in xrange(1, days + 1): if ((i - 1) % 6) == 1: day[i - 1] = 1 if ((i - 1) % 6) in [2, 4]: day[i - 1] = 2 elif start_day_id == 3: for i in xrange(2, days + 1): if ((i - 2) % 6) == 1: day[i - 1] = 1 if ((i - 2) % 6) in [2, 4]: day[i - 1] = 2 elif start_day_id == 4: day[0] = 2 for i in xrange(3, days + 1): if ((i - 3) % 6) == 1: day[i - 1] = 1 if ((i - 3) % 6) in [2, 4]: day[i - 1] = 2 elif start_day_id == 5: day[1] = 2 for i in xrange(4, days + 1): if ((i - 4) % 6) == 1: day[i - 1] = 1 if ((i - 4) % 6) in [2, 4]: day[i - 1] = 2 elif start_day_id == 6: day[0], day[2] = 2, 2 for i in xrange(5, days + 1): if ((i - 5) % 6) == 1: day[i - 1] = 1 if ((i - 5) % 6) in [2, 4]: day[i - 1] = 2 else: for i, v in enumerate( rrule(DAILY, dtstart=start, until=datetime.date(year, month, 25))): if v.weekday() in [0, 1, 2, 5, 6]: day[i] = 1 #保存数据库 schedule = Schedule() schedule.name = name schedule.year = year schedule.month = month schedule.days = days schedule.type = type schedule.list = separator.join([str(i) for i in day]) schedule.morning = 0 if len([i for i in day if i == 1]) == 0 else len( [i for i in day if i == 1]) schedule.evening = len([i for i in day if i == 2]) schedule.rest = 0 schedule.overtime = 0 schedule.updated_user = current_user.name schedule.updated_time = datetime.datetime.now() schedule.updated_count = 0 db.session.add(schedule) db.session.commit() return jsonify(json=True)