考勤-法定节假日
This commit is contained in:
@@ -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})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user