From 2b0865ea9f2847523dd794b05fce66239ee62081 Mon Sep 17 00:00:00 2001 From: Bright Date: Fri, 7 Mar 2025 18:09:29 +0700 Subject: [PATCH] migrate --- src/controllers/CommandController.ts | 1 + src/entities/ProfileEducation.ts | 7 ++ src/entities/view/viewRegistryEmployee.ts | 78 +++++++++++++++++---- src/entities/view/viewRegistryOfficer.ts | 82 ++++++++++++++++++++--- 4 files changed, 146 insertions(+), 22 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index e70ddebd..2d7d775f 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -4498,6 +4498,7 @@ export class CommandController extends Controller { profile.leaveRemark = _null; profile.leaveDate = _null; profile.leaveType = _null; + profile.leaveReason = _null; profile.lastUpdateUserId = req.user.sub; profile.lastUpdateFullName = req.user.name; profile.lastUpdatedAt = new Date(); diff --git a/src/entities/ProfileEducation.ts b/src/entities/ProfileEducation.ts index be379d85..721f66a1 100644 --- a/src/entities/ProfileEducation.ts +++ b/src/entities/ProfileEducation.ts @@ -161,6 +161,13 @@ export class ProfileEducation extends EntityBase { }) isEducation: boolean; + @Column({ + nullable: true, + comment: "เป็นวุฒิศึกษาสูงสุด", + default: null, + }) + isHigh: boolean; + @Column({ nullable: true, comment: "ใช้ประวัติการศึกษา", diff --git a/src/entities/view/viewRegistryEmployee.ts b/src/entities/view/viewRegistryEmployee.ts index 95460555..e6729525 100644 --- a/src/entities/view/viewRegistryEmployee.ts +++ b/src/entities/view/viewRegistryEmployee.ts @@ -42,16 +42,55 @@ import { ViewColumn, ViewEntity } from "typeorm"; WHERE orgRevision.orgRevisionIsCurrent IS TRUE AND orgRevision.orgRevisionIsDraft IS FALSE ), - Education AS ( - SELECT - ed.degree, - ed.profileEmployeeId, - ed.level, - ROW_NUMBER() OVER (PARTITION BY ed.profileEmployeeId ORDER BY ed.level DESC) AS ed_number - FROM profileEducation ed - WHERE ed.isUse IS TRUE - ORDER BY ed.level DESC - ), + Educations AS ( + SELECT + eds.profileEmployeeId, + JSON_ARRAYAGG( + JSON_OBJECT( + 'degree', eds.degree, + 'field', eds.field, + 'educationLevel', eds.educationLevel, + 'isEducation', eds.isEducation, + 'isHigh', eds.isHigh + ) + ) AS Educations + FROM ( + SELECT DISTINCT + eds.degree, + eds.field, + eds.educationLevel, + eds.isEducation, + eds.isHigh, + eds.profileEmployeeId + FROM profileEducation eds + ) AS eds + GROUP BY eds.profileEmployeeId + ), + EducationLevels AS ( + SELECT + edls.profileEmployeeId, + GROUP_CONCAT(DISTINCT edls.educationLevel ORDER BY edls.educationLevel SEPARATOR ', ') AS educationLevels + FROM profileEducation edls + WHERE edls.educationLevel IS NOT NULL AND edls.educationLevel != '' + GROUP BY edls.profileEmployeeId + ORDER BY edls.level DESC + ), + Degrees AS ( + SELECT + degs.profileEmployeeId, + GROUP_CONCAT(DISTINCT degs.degree ORDER BY degs.degree SEPARATOR ', ') AS degrees + FROM profileEducation degs + WHERE degs.degree IS NOT NULL AND degs.degree != '' + GROUP BY degs.profileEmployeeId + ), + Fields AS ( + SELECT + fies.profileEmployeeId, + GROUP_CONCAT(DISTINCT fies.field ORDER BY fies.field SEPARATOR ', ') AS fields + FROM profileEducation fies + WHERE fies.field IS NOT NULL AND fies.field != '' + GROUP BY fies.profileEmployeeId + ), PositionDate AS ( SELECT vcto.Years, @@ -108,7 +147,10 @@ import { ViewColumn, ViewEntity } from "typeorm"; p.dateRetire, p.dateRetireLaw, p.birthdate, - ed.degree, + eds.Educations, + edls.educationLevels, + degs.degrees, + fies.fields, TIMESTAMPDIFF(YEAR, p.birthdate, CURDATE()) AS age, vcto.Years, vcto.Months, @@ -120,7 +162,10 @@ import { ViewColumn, ViewEntity } from "typeorm"; LEFT JOIN employeePosLevel posLevel ON p.posLevelId = posLevel.id LEFT JOIN employeePosType 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.profileEmployeeId AND ed.ed_number = 1 + LEFT JOIN Educations eds ON p.id = eds.profileEmployeeId + LEFT JOIN EducationLevels edls ON p.id = edls.profileEmployeeId + LEFT JOIN Degrees degs ON p.id = degs.profileEmployeeId + LEFT JOIN Fields fies ON p.id = fies.profileEmployeeId LEFT JOIN PositionDate vcto ON p.id = vcto.profileEmployeeId LEFT JOIN PositionLevelDate vctlo ON p.id = vctlo.profileEmployeeId `, @@ -242,4 +287,13 @@ export class viewRegistryEmployee { @ViewColumn() levelDays: number; + + @ViewColumn() + Educations: object; + + @ViewColumn() + educationLevels: string; + + @ViewColumn() + fields: string; } diff --git a/src/entities/view/viewRegistryOfficer.ts b/src/entities/view/viewRegistryOfficer.ts index 4d31fc0a..ee62908a 100644 --- a/src/entities/view/viewRegistryOfficer.ts +++ b/src/entities/view/viewRegistryOfficer.ts @@ -6,6 +6,7 @@ import { ViewColumn, ViewEntity } from "typeorm"; SELECT posExecutive.posExecutiveName, pn.posMasterId, + pn.positionArea, ROW_NUMBER() OVER (PARTITION BY pn.posMasterId) AS pn_number FROM position pn LEFT JOIN posExecutive ON pn.posExecutiveId = posExecutive.id @@ -13,6 +14,7 @@ import { ViewColumn, ViewEntity } from "typeorm"; ), PosMaster AS ( SELECT + pn.positionArea, pm.current_holderId, pm.posMasterNo, pm.orgRootId, @@ -46,15 +48,56 @@ import { ViewColumn, ViewEntity } from "typeorm"; orgRevision.orgRevisionIsCurrent IS TRUE AND orgRevision.orgRevisionIsDraft IS FALSE ), - Education AS ( + Educations AS ( + SELECT + eds.profileId, + JSON_ARRAYAGG( + JSON_OBJECT( + 'degree', eds.degree, + 'field', eds.field, + 'educationLevel', eds.educationLevel, + 'isEducation', eds.isEducation, + 'isHigh', eds.isHigh + ) + ) AS Educations + FROM ( + SELECT DISTINCT + eds.degree, + eds.field, + eds.educationLevel, + eds.isEducation, + eds.isHigh, + eds.profileId + FROM profileEducation eds + ) AS eds + GROUP BY eds.profileId + ), + EducationLevels 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 DESC + edls.profileId, + GROUP_CONCAT(DISTINCT edls.educationLevel ORDER BY edls.educationLevel SEPARATOR ', ') AS educationLevels + FROM profileEducation edls + WHERE edls.educationLevel IS NOT NULL AND edls.educationLevel != '' + GROUP BY edls.profileId + ORDER BY edls.level DESC + ), + Degrees AS ( + SELECT + degs.profileId, + GROUP_CONCAT(DISTINCT degs.degree ORDER BY degs.degree SEPARATOR ', ') AS degrees + FROM profileEducation degs + WHERE degs.degree IS NOT NULL AND degs.degree != '' + GROUP BY degs.profileId + ORDER BY degs.level DESC + ), + Fields AS ( + SELECT + fies.profileId, + GROUP_CONCAT(DISTINCT fies.field ORDER BY fies.field SEPARATOR ', ') AS fields + FROM profileEducation fies + WHERE fies.field IS NOT NULL AND fies.field != '' + GROUP BY fies.profileId + ORDER BY fies.level DESC ), PositionDate AS ( SELECT @@ -103,6 +146,7 @@ import { ViewColumn, ViewEntity } from "typeorm"; END AS org, pm.searchShortName, pm.posExecutiveName, + pm.positionArea, p.position, posType.posTypeName, posLevel.posLevelName, @@ -112,7 +156,10 @@ import { ViewColumn, ViewEntity } from "typeorm"; p.dateRetire, p.dateRetireLaw, p.birthdate, - ed.degree, + eds.Educations, + edls.educationLevels, + degs.degrees, + fies.fields, TIMESTAMPDIFF(YEAR, p.birthdate, CURDATE()) AS age, vcto.Years, vcto.Months, @@ -124,7 +171,10 @@ import { ViewColumn, ViewEntity } from "typeorm"; 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 + LEFT JOIN Educations eds ON p.id = eds.profileId + LEFT JOIN EducationLevels edls ON p.id = edls.profileId + LEFT JOIN Degrees degs ON p.id = degs.profileId + LEFT JOIN Fields fies ON p.id = fies.profileId LEFT JOIN PositionDate vcto ON p.id = vcto.profileId LEFT JOIN PositionLevelDate vctlo ON p.id = vctlo.profileId `, @@ -249,4 +299,16 @@ export class viewRegistryOfficer { @ViewColumn() levelDays: number; + + @ViewColumn() + positionArea: string; + + @ViewColumn() + Educations: object; + + @ViewColumn() + educationLevels: string; + + @ViewColumn() + fields: string; }