feat : 修改排班规则
This commit is contained in:
parent
e6cad72807
commit
44af9bc494
|
@ -76,20 +76,28 @@ def db_ins_mplogx():
|
||||||
config = get_sysconfig()
|
config = get_sysconfig()
|
||||||
with DbConnection(config['enm1']['db_host'], config['enm1']['db_user'], config['enm1']['db_password'], config['enm1']['db_database1']) as cursor:
|
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)
|
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:
|
if bill_date is None:
|
||||||
raise Exception("bill_date is None")
|
raise Exception("bill_date is None")
|
||||||
query = """
|
query = """
|
||||||
SELECT id, de_real_quantity, CONCAT('x', inv_name) AS inv_name, bill_date
|
SELECT id, de_real_quantity, CONCAT('x', inv_name) AS inv_name, bill_date
|
||||||
FROM sa_weigh_view
|
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
|
ORDER BY bill_date
|
||||||
"""
|
"""
|
||||||
cursor.execute(query, (bill_date,))
|
cursor.execute(query, (bill_date, tuple(batchs)))
|
||||||
rows = cursor.fetchall() # 获取数据后保存至本地
|
rows = cursor.fetchall() # 获取数据后保存至本地
|
||||||
if rows:
|
if rows:
|
||||||
bill_date = rows[-1][-1]
|
bill_date = rows[-1][-1]
|
||||||
db_insert_mplogx_batch(rows)
|
db_insert_mplogx_batch(rows)
|
||||||
update_sysconfig({'enm1': {'bill_date': str(bill_date)}})
|
update_sysconfig({'enm1': {'bill_date': str(bill_date)}})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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):
|
def make_sflogs(mgroup: Mgroup, start_date: datetime.date, end_date: datetime.date, create_by=None):
|
||||||
shift_rule = mgroup.shift_rule
|
shift_rule = mgroup.shift_rule
|
||||||
shifts = Shift.objects.filter(rule=shift_rule) # 根据排班规则制定排班记录
|
shifts = Shift.objects.filter(rule=shift_rule).order_by('sort') # 根据排班规则制定排班记录
|
||||||
for shift in shifts:
|
current_date = start_date
|
||||||
start_time_o = shift.start_time_o
|
while current_date <= end_date:
|
||||||
end_time_o = shift.end_time_o
|
for shift in shifts:
|
||||||
current_date = start_date
|
start_time_o = shift.start_time_o
|
||||||
while current_date <= end_date:
|
end_time_o = shift.end_time_o
|
||||||
start_time = datetime.datetime.combine(current_date, start_time_o)
|
start_time = datetime.datetime.combine(current_date, start_time_o)
|
||||||
end_time = datetime.datetime.combine(current_date, end_time_o)
|
end_time = datetime.datetime.combine(current_date, end_time_o)
|
||||||
# 以下代码是解决跨天排班时生成当天班次缺少的bug
|
# 以下代码是解决跨天排班时生成当天班次缺少的bug
|
||||||
if start_time > end_time:
|
if start_time > end_time:
|
||||||
if end_time.hour == 0:
|
end_time += datetime.timedelta(days=1)
|
||||||
end_time += datetime.timedelta(days=1)
|
|
||||||
else:
|
|
||||||
start_time -= datetime.timedelta(days=1)
|
|
||||||
total_sec = (end_time - start_time).total_seconds()
|
total_sec = (end_time - start_time).total_seconds()
|
||||||
|
|
||||||
# 创建SfLog记录
|
# 创建SfLog记录
|
||||||
|
@ -107,6 +104,7 @@ def make_sflogs(mgroup: Mgroup, start_date: datetime.date, end_date: datetime.da
|
||||||
team = get_team_x(sflog)
|
team = get_team_x(sflog)
|
||||||
if team:
|
if team:
|
||||||
sflog.team = team
|
sflog.team = team
|
||||||
|
sflog.leader = team.leader
|
||||||
sflog.save(update_fields=['team'])
|
sflog.save(update_fields=['team'])
|
||||||
current_date = current_date + datetime.timedelta(days=1)
|
current_date = current_date + datetime.timedelta(days=1)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue