198 lines
4.9 KiB
TypeScript
198 lines
4.9 KiB
TypeScript
|
|
import { ViewColumn, ViewEntity } from "typeorm";
|
||
|
|
|
||
|
|
@ViewEntity({
|
||
|
|
expression: `
|
||
|
|
WITH Position AS (
|
||
|
|
SELECT
|
||
|
|
posExecutive.posExecutiveName,
|
||
|
|
pn.posMasterId,
|
||
|
|
ROW_NUMBER() OVER (PARTITION BY pn.posMasterId) AS pn_number
|
||
|
|
FROM position pn
|
||
|
|
LEFT JOIN posExecutive ON pn.posExecutiveId = posExecutive.id
|
||
|
|
WHERE pn.positionIsSelected IS TRUE
|
||
|
|
),
|
||
|
|
PosMaster AS (
|
||
|
|
SELECT
|
||
|
|
pm.current_holderId,
|
||
|
|
pm.posMasterNo,
|
||
|
|
pm.orgRootId,
|
||
|
|
pm.orgChild1Id,
|
||
|
|
pm.orgChild2Id,
|
||
|
|
pm.orgChild3Id,
|
||
|
|
pm.orgChild4Id,
|
||
|
|
orgRoot.orgRootName,
|
||
|
|
orgChild1.orgChild1Name,
|
||
|
|
orgChild2.orgChild2Name,
|
||
|
|
orgChild3.orgChild3Name,
|
||
|
|
orgChild4.orgChild4Name,
|
||
|
|
pn.posExecutiveName,
|
||
|
|
CASE
|
||
|
|
WHEN pm.orgChild1Id IS NULL THEN CONCAT(orgRoot.orgRootShortName, pm.posMasterNo)
|
||
|
|
WHEN pm.orgChild2Id IS NULL THEN CONCAT(orgChild1.orgChild1ShortName, pm.posMasterNo)
|
||
|
|
WHEN pm.orgChild3Id IS NULL THEN CONCAT(orgChild2.orgChild2ShortName, pm.posMasterNo)
|
||
|
|
WHEN pm.orgChild4Id IS NULL THEN CONCAT(orgChild3.orgChild3ShortName, pm.posMasterNo)
|
||
|
|
ELSE CONCAT(orgChild4.orgChild4ShortName, pm.posMasterNo)
|
||
|
|
END AS searchShortName,
|
||
|
|
ROW_NUMBER() OVER (PARTITION BY pm.current_holderId ORDER BY pm.posMasterNo DESC) AS pm_number
|
||
|
|
FROM posMaster pm
|
||
|
|
LEFT JOIN orgRevision ON orgRevision.id = pm.orgRevisionId
|
||
|
|
LEFT JOIN orgRoot ON orgRoot.id = pm.orgRootId
|
||
|
|
LEFT JOIN orgChild1 ON orgChild1.id = pm.orgChild1Id
|
||
|
|
LEFT JOIN orgChild2 ON orgChild2.id = pm.orgChild2Id
|
||
|
|
LEFT JOIN orgChild3 ON orgChild3.id = pm.orgChild3Id
|
||
|
|
LEFT JOIN orgChild4 ON orgChild4.id = pm.orgChild4Id
|
||
|
|
LEFT JOIN Position pn ON pm.id = pn.posMasterId AND pn.pn_number = 1
|
||
|
|
WHERE
|
||
|
|
orgRevision.orgRevisionIsCurrent IS TRUE
|
||
|
|
AND orgRevision.orgRevisionIsDraft IS FALSE
|
||
|
|
),
|
||
|
|
Education AS (
|
||
|
|
SELECT
|
||
|
|
ed.degree,
|
||
|
|
ed.profileId,
|
||
|
|
ed.level,
|
||
|
|
ROW_NUMBER() OVER (PARTITION BY ed.profileId ORDER BY ed.level DESC) AS ed_number
|
||
|
|
FROM profileEducation ed
|
||
|
|
WHERE ed.isUse IS TRUE
|
||
|
|
ORDER BY ed.level ASC
|
||
|
|
)
|
||
|
|
SELECT
|
||
|
|
p.citizenId,
|
||
|
|
p.prefix,
|
||
|
|
p.firstName,
|
||
|
|
p.lastName,
|
||
|
|
p.isProbation,
|
||
|
|
p.isLeave,
|
||
|
|
p.isRetirement,
|
||
|
|
p.leaveType,
|
||
|
|
pm.posMasterNo,
|
||
|
|
pm.orgRootId,
|
||
|
|
pm.orgChild1Id,
|
||
|
|
pm.orgChild2Id,
|
||
|
|
pm.orgChild3Id,
|
||
|
|
pm.orgChild4Id,
|
||
|
|
pm.orgRootName,
|
||
|
|
pm.orgChild1Name,
|
||
|
|
pm.orgChild2Name,
|
||
|
|
pm.orgChild3Name,
|
||
|
|
pm.orgChild4Name,
|
||
|
|
CASE
|
||
|
|
WHEN pm.orgChild1Id IS NULL THEN pm.orgRootName
|
||
|
|
WHEN pm.orgChild2Id IS NULL THEN CONCAT(pm.orgChild1Name, " ", pm.orgRootName)
|
||
|
|
WHEN pm.orgChild3Id IS NULL THEN CONCAT(pm.orgChild2Name, " ", pm.orgChild1Name, " ", pm.orgRootName)
|
||
|
|
WHEN pm.orgChild4Id IS NULL THEN CONCAT(pm.orgChild3Name, " ", pm.orgChild2Name, " ", pm.orgChild1Name, " ", pm.orgRootName)
|
||
|
|
ELSE CONCAT(pm.orgChild4Name, " ", pm.orgChild3Name, " ", pm.orgChild2Name, " ", pm.orgChild1Name, " ", pm.orgRootName)
|
||
|
|
END AS org,
|
||
|
|
pm.searchShortName,
|
||
|
|
pm.posExecutiveName,
|
||
|
|
p.position,
|
||
|
|
posType.posTypeName,
|
||
|
|
posLevel.posLevelName,
|
||
|
|
p.gender,
|
||
|
|
p.relationship,
|
||
|
|
p.dateAppoint,
|
||
|
|
p.birthdate,
|
||
|
|
ed.degree,
|
||
|
|
TIMESTAMPDIFF(YEAR, p.birthdate, CURDATE()) AS age
|
||
|
|
FROM profile p
|
||
|
|
LEFT JOIN posLevel ON p.posLevelId = posLevel.id
|
||
|
|
LEFT JOIN posType ON p.posTypeId = posType.id
|
||
|
|
LEFT JOIN PosMaster pm ON p.id = pm.current_holderId AND pm.pm_number = 1
|
||
|
|
LEFT JOIN Education ed ON p.id = ed.profileId AND ed.ed_number = 1
|
||
|
|
`,
|
||
|
|
})
|
||
|
|
export class viewRegistryOfficer {
|
||
|
|
@ViewColumn()
|
||
|
|
id: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
prefix: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
firstName: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
lastName: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
isProbation: boolean;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
isLeave: boolean;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
isRetirement: boolean;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
leaveType: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
posMasterNo: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
orgRootId: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
orgChild1Id: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
orgChild2Id: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
orgChild3Id: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
orgChild4Id: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
orgRootName: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
orgChild1Name: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
orgChild2Name: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
orgChild3Name: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
orgChild4Name: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
org: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
searchShortName: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
posExecutiveName: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
position: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
posTypeName: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
posLevelName: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
gender: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
relationship: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
dateAppoint: Date;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
birthdate: Date;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
degree: string;
|
||
|
|
|
||
|
|
@ViewColumn()
|
||
|
|
age: number;
|
||
|
|
}
|