考勤-法定节假日

This commit is contained in:
pengyuthon
2024-06-15 18:25:43 +08:00
parent 851927bd37
commit 6b146d6d50
@@ -2,8 +2,7 @@
from odoo import models, api, fields
import requests
import json
import datetime
from datetime import timedelta
from datetime import datetime, timedelta
class ResourceCalendar(models.Model):
@@ -17,9 +16,7 @@ class ResourceCalendar(models.Model):
通过百度日历接口获取法定节假日信息
:return:
"""
self = self.sudo() # 获取系统管理员权限
date_list = [] # 法定节假日
date_list2 = [] # 法定工作日
date_list = []
years = str(fields.Date.today().year)
for i in range(1, 13):
headers = {"Content-Type": "application/json;charset=UTF-8"}
@@ -40,50 +37,39 @@ class ResourceCalendar(models.Model):
for one in sort_month_list:
if 'status' in one and one['status'] == '1':
date = one['oDate'].split('T')[0]
date_obj = datetime.datetime.strptime(date, "%Y-%m-%d")
next_day = date_obj + datetime.timedelta(days=1)
date_obj = datetime.strptime(date, "%Y-%m-%d")
next_day = date_obj + timedelta(days=1)
next_day_str = next_day.strftime("%Y-%m-%d")
if 'festivalList' in one:
if one['festivalList'] in ['端午节', '中秋节', '国庆节,国际音乐日', '劳动节', '清明',
'春节', '元旦', '除夕']:
if one['festivalList'] == '国庆节,国际音乐日':
one['festivalList'] = '国庆节'
date_list.append([next_day_str, one['festivalList']])
else:
date_list.append([next_day_str, ''])
for holiday in ['端午节', '中秋节', '国庆节', '劳动节', '清明', '春节', '元旦', '除夕']:
if holiday in one['festivalList']:
if '春节' in one['festivalList']:
one['festivalList'] = '春节'
if '国庆节' in one['festivalList']:
one['festivalList'] = '国庆节'
date_list.append([next_day_str, one['festivalList']])
else:
date_list.append([next_day_str, ''])
else:
date_list.append([next_day_str, ''])
if 'status' in one and one['status'] == '2':
date = one['oDate'].split('T')[0]
date_obj = datetime.datetime.strptime(date, "%Y-%m-%d")
next_day = date_obj + datetime.timedelta(days=1)
next_day_str = next_day.strftime("%Y-%m-%d")
date_list2.append(next_day_str)
new_list = [list(x) for x in set(tuple(x) for x in date_list)]
new_list2 = sorted(new_list, key=lambda x: x[0])
other_date_list = []
for other in new_list2:
other_date_list.append(other[0])
self.holiday_data_lines = other_date_list
q = 0
a = ['元旦', '春节', '清明', '劳动节', '端午节', '中秋节', '国庆节']
new_list2[0][1] = '元旦'
for i in new_list2:
if i[1] == '':
if a[q] == '清明':
q = q + 1
i[1] = a[q]
j = 0
for i in range(len(new_list2)):
prev_date = datetime.strptime(new_list2[i - 1][0], '%Y-%m-%d')
curr_date = datetime.strptime(new_list2[i][0], '%Y-%m-%d')
if (curr_date - prev_date).days > 1: # 判断日期之间差大于1
new_list2[i][1] = a[j + 1]
j = j + 1
else:
if a[q] != i[1]:
q = q + 1
new_list2[i][1] = a[j]
holidays_dic = {}
for date, holiday in new_list2:
if holiday not in holidays_dic:
holidays_dic[holiday] = [datetime.datetime.strptime(date, "%Y-%m-%d"),
datetime.datetime.strptime(date, "%Y-%m-%d")]
holidays_dic[holiday][1] = datetime.datetime.strptime(date, "%Y-%m-%d")
holidays_dic[holiday] = [datetime.strptime(date, "%Y-%m-%d"),
datetime.strptime(date, "%Y-%m-%d")]
holidays_dic[holiday][1] = datetime.strptime(date, "%Y-%m-%d")
holiday_list = []
for holiday, time in holidays_dic.items():
holiday_values = {
@@ -93,6 +79,7 @@ class ResourceCalendar(models.Model):
}
holiday_list.append((0, 0, holiday_values))
self.calendar_holiday_ids.unlink()
self.holiday_data_lines = holiday_list
self.write({'calendar_holiday_ids': holiday_list})