人力资源
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

101 lines
3.5 KiB

'use strict';
const moment = require('moment');
const request = require('superagent');
module.exports = function (app, opts) {
const timorHoliday = app.fs.scheduleInit(
{
interval: '54 42 4 */7 * *',
// immediate: true,
proRun: true,
},
async () => {
const { timorApiUrl } = opts
const { models } = app.fs.dc
const { pushByEmail } = app.fs.utils
const existCount = await models.Holiday.count()
let begainDay = existCount ? moment() : moment('2022-01-01')
let endDay = moment().add(3, 'months').endOf('month')
let checkDay = begainDay.clone()
while (checkDay.isSameOrBefore(endDay)) {
try {
const checkDayStr = checkDay.format('YYYY-MM-DD')
let holidayRes = await request.get(
timorApiUrl + `holiday/info/${checkDayStr}`,
)
let holidayData = holidayRes.body || {}
if (holidayData.code == 0) {
let holidayType = holidayData.type.type
let dayType = ''
if (
holidayType == 2
&& holidayData.holiday
&& holidayData.holiday.wage == 3
) {
// 正经节假日 3倍工资那种
// festivals
dayType = 'festivals'
} else if (
holidayType == 1
|| (
holidayType == 2
&& holidayData.holiday
&& holidayData.holiday.wage < 3
)
) {
// 普假 休息日非节假日
dayType = 'dayoff'
} else if (holidayType == 0 || holidayType == 3) {
// 工作日或补班
dayType = 'workday'
}
const dbRes = await models.Holiday.findOne({
where: {
day: checkDayStr
}
})
if (dbRes) {
await models.Holiday.update({
holiday: holidayData,
type: dayType
}, {
where: {
day: checkDayStr
}
})
} else {
await models.Holiday.create({
day: checkDayStr,
holiday: holidayData,
type: dayType
})
}
}
checkDay = checkDay.add(1, 'day')
await new Promise(resolve => setTimeout(() => resolve(), 3000));
} catch (error) {
console.error(error);
}
}
let existLastDayRes = await models.Holiday.findOne({
order: [['day', 'DESC']]
})
if (!opts.dev && (!existLastDayRes || moment(existLastDayRes.day).diff(moment(), 'day') < 32)) {
await pushByEmail({
email: ['gao.zhiyuan@free-sun.com.cn', 'li.yupeng@free-sun.com.cn'],
title: '人资系统[TimorHoliday]定时任务告警',
text: '已有日期已少于 32 天,当尽快排查最新日志完善日期信息;'
})
}
}
)
return {
timorHoliday
}
}