This commit is contained in:
Bright 2025-02-26 18:04:20 +07:00
parent 0b1ba202fc
commit 3591dff755
3 changed files with 474 additions and 0 deletions

View file

@ -0,0 +1,151 @@
import { ViewColumn, ViewEntity } from "typeorm";
@ViewEntity({
expression: `
SELECT
DATE(MIN(commandDateAffect)) AS commandDateAffect,
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) AS days_diff,
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 365.2524 AS 'Years',
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) / 30.4375 % 12 AS 'Months',
TIMESTAMPDIFF(
DAY,
LAG(MIN(commandDateAffect)) OVER (PARTITION BY profileId ORDER BY commandDateAffect, \`order\` ASC), MIN(commandDateAffect)) % 30.4375 AS 'Days',
positionName,
positionCee,
posNo,
positionExecutive,
positionType,
positionLevel,
OrgRoot,
orgChild1,
orgChild2,
orgChild3,
orgChild4,
commandCode,
commandName,
commandNo,
commandYear,
remark,
profileId,
ROW_NUMBER() OVER (PARTITION BY profileId ORDER BY commandDateAffect ASC) AS orderNumber
FROM
profileSalary
WHERE
commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)
GROUP BY
profileId, positionName
UNION ALL
SELECT
CURDATE() AS commandDateAffect,
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) AS days_diff,
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 365.2524 AS 'Years',
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) / 30.4375 % 12 AS 'Months',
TIMESTAMPDIFF(DAY, MAX(commandDateAffect), CURDATE()) % 30.4375 AS 'Days',
NULL AS positionName,
NULL AS positionCee,
NULL AS posNo,
NULL AS positionExecutive,
NULL AS positionType,
NULL AS positionLevel,
NULL AS OrgRoot,
NULL AS orgChild1,
NULL AS orgChild2,
NULL AS orgChild3,
NULL AS orgChild4,
NULL AS commandCode,
NULL AS commandName,
NULL AS commandNo,
NULL AS commandYear,
'Comparison with current date' AS remark,
profileId,
NULL AS orderNumber
FROM
profileSalary
WHERE
commandCode IN (1, 2, 3, 4, 8, 10, 11, 12, 15, 16)
GROUP BY
profileId
ORDER BY
profileId,
commandDateAffect ASC
`,
})
export class viewCurrentTenureOfficer {
@ViewColumn()
commandDateAffect: Date;
@ViewColumn()
days_diff: number;
@ViewColumn()
Years: number;
@ViewColumn()
Months: number;
@ViewColumn()
Days: number;
@ViewColumn()
positionName: string;
@ViewColumn()
positionCee: string;
@ViewColumn()
posNo: string;
@ViewColumn()
positionExecutive: string;
@ViewColumn()
positionType: string;
@ViewColumn()
positionLevel: string;
@ViewColumn()
OrgRoot: string;
@ViewColumn()
orgChild1: string;
@ViewColumn()
orgChild2: string;
@ViewColumn()
orgChild3: string;
@ViewColumn()
orgChild4: string;
@ViewColumn()
commandCode: number;
@ViewColumn()
commandName: string;
@ViewColumn()
commandNo: string;
@ViewColumn()
commandYear: number;
@ViewColumn()
remark: string;
@ViewColumn()
profileId: string;
@ViewColumn()
orderNumber: number;
}