人力资源
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.

89 lines
2.9 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 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) {
2 years ago
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) {
2 years ago
await models.Holiday.update({
holiday: holidayData,
type: dayType
}, {
where: {
day: checkDayStr
}
})
} else {
await models.Holiday.create({
day: checkDayStr,
2 years ago
holiday: holidayData,
type: dayType
})
}
}
checkDay = checkDay.add(1, 'day')
} catch (error) {
console.error(error);
// TODO 发邮件
}
}
}
)
return {
timorHoliday
}
}