155 lines
3.7 KiB
TypeScript
155 lines
3.7 KiB
TypeScript
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) AND
|
|
positionExecutive <> '' AND
|
|
positionExecutive is not null
|
|
GROUP BY
|
|
profileId, positionExecutive
|
|
|
|
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) AND
|
|
positionExecutive <> '' AND
|
|
positionExecutive is not null
|
|
GROUP BY
|
|
profileId
|
|
|
|
ORDER BY
|
|
profileId,
|
|
commandDateAffect ASC
|
|
`,
|
|
})
|
|
export class viewCurrentTenureExcOfficer {
|
|
@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;
|
|
}
|