diff --git a/apps/enm/tasks.py b/apps/enm/tasks.py index 98dc6618..55cf77d0 100644 --- a/apps/enm/tasks.py +++ b/apps/enm/tasks.py @@ -76,20 +76,28 @@ def db_ins_mplogx(): config = get_sysconfig() with DbConnection(config['enm1']['db_host'], config['enm1']['db_user'], config['enm1']['db_password'], config['enm1']['db_database1']) as cursor: bill_date = config['enm1'].get('bill_date', None) + batchs = config['enm1'].get('batch', None) + if not batchs: + raise Exception("batch is None") + try: + bill_date = datetime.datetime.strptime(bill_date, '%Y-%m-%d %H:%M:%S') + except ValueError: + raise Exception(f"Invalid date format in {bill_date}") if bill_date is None: raise Exception("bill_date is None") query = """ SELECT id, de_real_quantity, CONCAT('x', inv_name) AS inv_name, bill_date FROM sa_weigh_view - WHERE bill_date > %s and de_real_quantity > 0 + WHERE bill_date >= %s and de_real_quantity > 0 + AND inv_name IN %s ORDER BY bill_date """ - cursor.execute(query, (bill_date,)) + cursor.execute(query, (bill_date, tuple(batchs))) rows = cursor.fetchall() # 获取数据后保存至本地 if rows: bill_date = rows[-1][-1] - db_insert_mplogx_batch(rows) - update_sysconfig({'enm1': {'bill_date': str(bill_date)}}) + db_insert_mplogx_batch(rows) + update_sysconfig({'enm1': {'bill_date': str(bill_date)}}) diff --git a/apps/wpm/services.py b/apps/wpm/services.py index d4a01587..1b7c026d 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -76,20 +76,17 @@ def get_team_x(sflog: SfLog): def make_sflogs(mgroup: Mgroup, start_date: datetime.date, end_date: datetime.date, create_by=None): shift_rule = mgroup.shift_rule - shifts = Shift.objects.filter(rule=shift_rule) # 根据排班规则制定排班记录 - for shift in shifts: - start_time_o = shift.start_time_o - end_time_o = shift.end_time_o - current_date = start_date - while current_date <= end_date: + shifts = Shift.objects.filter(rule=shift_rule).order_by('sort') # 根据排班规则制定排班记录 + current_date = start_date + while current_date <= end_date: + for shift in shifts: + start_time_o = shift.start_time_o + end_time_o = shift.end_time_o start_time = datetime.datetime.combine(current_date, start_time_o) end_time = datetime.datetime.combine(current_date, end_time_o) # 以下代码是解决跨天排班时生成当天班次缺少的bug if start_time > end_time: - if end_time.hour == 0: - end_time += datetime.timedelta(days=1) - else: - start_time -= datetime.timedelta(days=1) + end_time += datetime.timedelta(days=1) total_sec = (end_time - start_time).total_seconds() # 创建SfLog记录 @@ -107,6 +104,7 @@ def make_sflogs(mgroup: Mgroup, start_date: datetime.date, end_date: datetime.da team = get_team_x(sflog) if team: sflog.team = team + sflog.leader = team.leader sflog.save(update_fields=['team']) current_date = current_date + datetime.timedelta(days=1)