4 changed files with 215 additions and 257 deletions
@ -0,0 +1,68 @@ |
|||||
|
'use strict'; |
||||
|
const moment = require('moment') |
||||
|
const request = require('superagent'); |
||||
|
|
||||
|
module.exports = function (app, opts) { |
||||
|
|
||||
|
async function overtimeStatisticListDayType ({ |
||||
|
startDate, endDate, pepUserIds = [] |
||||
|
}) { |
||||
|
const { clickHouse } = app.fs |
||||
|
|
||||
|
const sumRes = await clickHouse.hr.query(` |
||||
|
SELECT |
||||
|
overtime.pep_user_id AS pepUserId, |
||||
|
holiday.type AS dayType, |
||||
|
overtime.compensate AS compensate, |
||||
|
sum(overtime_day.duration) AS duration |
||||
|
FROM overtime_day |
||||
|
INNER JOIN overtime |
||||
|
ON overtime.id = overtime_day.overtime_id |
||||
|
AND overtime.pep_user_id IN (${pepUserIds.join(',')}) |
||||
|
LEFT JOIN holiday |
||||
|
ON holiday.day = overtime_day.day |
||||
|
WHERE overtime.pep_user_id IN (${pepUserIds.join(',')}) |
||||
|
${startDate ? ` |
||||
|
AND overtime_day.day >= '${moment(startDate).format('YYYY-MM-DD')}' |
||||
|
`: ''}
|
||||
|
${endDate ? ` |
||||
|
AND overtime_day.day <= '${moment(endDate).format('YYYY-MM-DD')}' |
||||
|
` : ''}
|
||||
|
GROUP BY holiday.type, overtime.compensate, overtime.pep_user_id |
||||
|
`).toPromise()
|
||||
|
|
||||
|
return sumRes |
||||
|
} |
||||
|
|
||||
|
async function vacateStatisticListDayType ({ |
||||
|
startDate, endDate, pepUserIds = [] |
||||
|
}) { |
||||
|
const { clickHouse } = app.fs |
||||
|
|
||||
|
const sumRes = await clickHouse.hr.query(` |
||||
|
SELECT |
||||
|
vacate.pep_user_id AS pepUserId, |
||||
|
vacate.type AS type, |
||||
|
sum(vacate_day.duration) AS duration |
||||
|
FROM vacate_day |
||||
|
INNER JOIN vacate |
||||
|
ON vacate.id = vacate_day.vacate_id |
||||
|
AND vacate.pep_user_id IN (${pepUserIds.join(',')}) |
||||
|
WHERE vacate.pep_user_id IN (${pepUserIds.join(',')}) |
||||
|
${startDate ? ` |
||||
|
AND vacate_day.day >= '${moment(startDate).format('YYYY-MM-DD')}' |
||||
|
`: ''}
|
||||
|
${endDate ? ` |
||||
|
AND vacate_day.day <= '${moment(endDate).format('YYYY-MM-DD')}' |
||||
|
` : ''}
|
||||
|
GROUP BY vacate.type, vacate.pep_user_id |
||||
|
`).toPromise()
|
||||
|
|
||||
|
return sumRes |
||||
|
} |
||||
|
|
||||
|
return { |
||||
|
overtimeStatisticListDayType, |
||||
|
vacateStatisticListDayType, |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue