feat : 修改排班规则
This commit is contained in:
parent
e6cad72807
commit
44af9bc494
|
@ -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)}})
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue