diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index 38cf4a99..320c3179 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -67,6 +67,13 @@ export class ReportController extends Controller { order: { orgRootOrder: "ASC" }, relations: [ "posMasters", + "posMasters.orgRoot", + "posMasters.orgChild1", + "posMasters.orgChild2", + "posMasters.orgChild3", + "posMasters.orgChild4", + "posMasters.next_holder", + "posMasters.next_holder", "posMasters.next_holder", "posMasters.next_holder.posLevel", "posMasters.next_holder.posType", @@ -87,11 +94,16 @@ export class ReportController extends Controller { const orgRootIds = orgRootData.map((orgRoot) => orgRoot.id) || null; const orgChild1Data = await this.child1Repository.find({ where: { - orgRevisionId: In(orgRootIds), + orgRootId: In(orgRootIds), }, order: { orgChild1Order: "ASC" }, relations: [ "posMasters", + "posMasters.orgRoot", + "posMasters.orgChild1", + "posMasters.orgChild2", + "posMasters.orgChild3", + "posMasters.orgChild4", "posMasters.next_holder", "posMasters.next_holder.posLevel", "posMasters.next_holder.posType", @@ -112,11 +124,16 @@ export class ReportController extends Controller { const orgChild1Ids = orgChild1Data.map((orgChild1) => orgChild1.id) || null; const orgChild2Data = await this.child2Repository.find({ where: { - orgRevisionId: In(orgChild1Ids), + orgChild1: In(orgChild1Ids), }, order: { orgChild2Order: "ASC" }, relations: [ "posMasters", + "posMasters.orgRoot", + "posMasters.orgChild1", + "posMasters.orgChild2", + "posMasters.orgChild3", + "posMasters.orgChild4", "posMasters.next_holder", "posMasters.next_holder.posLevel", "posMasters.next_holder.posType", @@ -137,11 +154,16 @@ export class ReportController extends Controller { const orgChild2Ids = orgChild2Data.map((orgChild2) => orgChild2.id) || null; const orgChild3Data = await this.child3Repository.find({ where: { - orgRevisionId: In(orgChild2Ids), + orgChild2: In(orgChild2Ids), }, order: { orgChild3Order: "ASC" }, relations: [ "posMasters", + "posMasters.orgRoot", + "posMasters.orgChild1", + "posMasters.orgChild2", + "posMasters.orgChild3", + "posMasters.orgChild4", "posMasters.next_holder", "posMasters.next_holder.posLevel", "posMasters.next_holder.posType", @@ -162,11 +184,16 @@ export class ReportController extends Controller { const orgChild3Ids = orgChild3Data.map((orgChild3) => orgChild3.id) || null; const orgChild4Data = await this.child4Repository.find({ where: { - orgRevisionId: In(orgChild3Ids), + orgChild3: In(orgChild3Ids), }, order: { orgChild4Order: "ASC" }, relations: [ "posMasters", + "posMasters.orgRoot", + "posMasters.orgChild1", + "posMasters.orgChild2", + "posMasters.orgChild3", + "posMasters.orgChild4", "posMasters.next_holder", "posMasters.next_holder.posLevel", "posMasters.next_holder.posType", @@ -211,6 +238,7 @@ export class ReportController extends Controller { let data = new Array(); let _node: any; + let no = 1; for (let orgRoot of orgRootData) { await Promise.all( orgRoot.posMasters @@ -280,7 +308,7 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posType ?.posTypeName : posMaster.next_holder.posType == null - ? "" + ? "-" : posMaster.next_holder.posType.posTypeName, posLevel: posMaster.next_holder == null @@ -289,7 +317,7 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posLevel ?.posLevelName : posMaster.next_holder.posLevel == null - ? "" + ? "-" : posMaster.next_holder.posLevel.posLevelName, posExecutive: posMaster.next_holder == null @@ -298,7 +326,7 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posExecutive ?.posExecutiveName : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.positions.find((x: any) => (x.isSit = true)) ?.posExecutive?.posExecutiveName, @@ -306,7 +334,7 @@ export class ReportController extends Controller { posMaster.next_holder == null ? orgRoot.orgRootName : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.orgChild4 != null ? positionMasterProfileOld.orgChild4.orgChild4Name : positionMasterProfileOld.orgChild3 != null @@ -317,12 +345,12 @@ export class ReportController extends Controller { ? positionMasterProfileOld.orgChild1.orgChild1Name : positionMasterProfileOld.orgRoot != null ? positionMasterProfileOld.orgRoot.orgRootName - : "", + : "-", profileOrgShortName: posMaster.next_holder == null ? orgRoot.orgRootShortName : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.orgChild4 != null ? positionMasterProfileOld.orgChild4.orgChild4ShortName : positionMasterProfileOld.orgChild3 != null @@ -333,7 +361,7 @@ export class ReportController extends Controller { ? positionMasterProfileOld.orgChild1.orgChild1ShortName : positionMasterProfileOld.orgRoot != null ? positionMasterProfileOld.orgRoot.orgRootShortName - : "", + : "-", profileFullname: posMaster.next_holder == null ? "- ว่าง -" @@ -341,10 +369,10 @@ export class ReportController extends Controller { profilePosMasterNo: posMaster.next_holder == null ? positionMasterOld == null - ? "" + ? "-" : positionMasterOld.posMasterNo : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.posMasterNo, profilePositionName: posMaster.next_holder == null @@ -358,7 +386,7 @@ export class ReportController extends Controller { ? posType.join(" หรือ ") : profilePosType.join(" หรือ ") : posMaster.next_holder.posType == null - ? "" + ? "-" : posMaster.next_holder.posType.posTypeName, profilePosLevel: posMaster.next_holder == null @@ -366,7 +394,7 @@ export class ReportController extends Controller { ? posLevel.join(" หรือ ") : profilePosLevel.join(" หรือ ") : posMaster.next_holder.posLevel == null - ? "" + ? "-" : posMaster.next_holder.posLevel.posLevelName, profilePosExecutive: posMaster.next_holder == null @@ -374,7 +402,7 @@ export class ReportController extends Controller { ? posExecutive.join(" หรือ ") : profilePosExecutive.join(" หรือ ") : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.positions.find( (x: any) => (x.positionIsSelected = true), )?.posExecutive?.posExecutiveName, @@ -382,19 +410,20 @@ export class ReportController extends Controller { if (_node == null) { const head = { posMasterNo: node.orgTreeShortName, - profileFullname: node.orgTreeName, - posExecutive: "", + profileFullname: node.profileOrgName, + posExecutive: node.orgTreeName, positionName: "", posType: "", posLevel: "", profilePosMasterNo: node.profileOrgShortName, - profilePosExecutive: node.profileOrgName, + profilePosExecutive: "", profilePositionName: "", profilePosType: "", profilePosLevel: "", }; data.push(head); const _head = { + no: no, posMasterNo: node.posMasterNo, profileFullname: node.profileFullname, posExecutive: node.posExecutive, @@ -410,9 +439,9 @@ export class ReportController extends Controller { data.push(_head); } else { if ( - node.orgTreeShortName != _node.orgTreeShortName && - node.orgTreeName != _node.orgTreeName && - node.profileOrgShortName != _node.profileOrgShortName && + node.orgTreeShortName != _node.orgTreeShortName || + node.orgTreeName != _node.orgTreeName || + node.profileOrgShortName != _node.profileOrgShortName || node.profileOrgName != _node.profileOrgName ) { const head = { @@ -421,8 +450,8 @@ export class ReportController extends Controller { ? "" : node.orgTreeShortName, profileFullname: - node.orgTreeName == _node.orgTreeName ? "" : node.orgTreeName, - posExecutive: "", + node.profileOrgName == _node.profileOrgName ? "" : node.profileOrgName, + posExecutive: node.orgTreeName == _node.orgTreeName ? "" : node.orgTreeName, positionName: "", posType: "", posLevel: "", @@ -430,8 +459,7 @@ export class ReportController extends Controller { node.profileOrgShortName == _node.profileOrgShortName ? "" : node.profileOrgShortName, - profilePosExecutive: - node.profileOrgName == _node.profileOrgName ? "" : node.profileOrgName, + profilePosExecutive: "", profilePositionName: "", profilePosType: "", profilePosLevel: "", @@ -440,6 +468,7 @@ export class ReportController extends Controller { _node == null; } const head = { + no: no, posMasterNo: node.posMasterNo == _node.posMasterNo ? "" : node.posMasterNo, profileFullname: node.profileFullname, posExecutive: node.posExecutive == _node.posExecutive ? "" : node.posExecutive, @@ -465,6 +494,7 @@ export class ReportController extends Controller { }; data.push(head); } + no += 1; _node = node; } }), @@ -548,7 +578,7 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posType ?.posTypeName : posMaster.next_holder.posType == null - ? "" + ? "-" : posMaster.next_holder.posType.posTypeName, posLevel: posMaster.next_holder == null @@ -557,7 +587,7 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posLevel ?.posLevelName : posMaster.next_holder.posLevel == null - ? "" + ? "-" : posMaster.next_holder.posLevel.posLevelName, posExecutive: posMaster.next_holder == null @@ -566,7 +596,7 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posExecutive ?.posExecutiveName : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.positions.find((x: any) => (x.isSit = true)) ?.posExecutive?.posExecutiveName, @@ -574,7 +604,7 @@ export class ReportController extends Controller { posMaster.next_holder == null ? orgChild1.orgChild1Name : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.orgChild4 != null ? positionMasterProfileOld.orgChild4.orgChild4Name : positionMasterProfileOld.orgChild3 != null @@ -585,12 +615,12 @@ export class ReportController extends Controller { ? positionMasterProfileOld.orgChild1.orgChild1Name : positionMasterProfileOld.orgRoot != null ? positionMasterProfileOld.orgRoot.orgRootName - : "", + : "-", profileOrgShortName: posMaster.next_holder == null ? orgChild1.orgChild1ShortName : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.orgChild4 != null ? positionMasterProfileOld.orgChild4.orgChild4ShortName : positionMasterProfileOld.orgChild3 != null @@ -601,7 +631,7 @@ export class ReportController extends Controller { ? positionMasterProfileOld.orgChild1.orgChild1ShortName : positionMasterProfileOld.orgRoot != null ? positionMasterProfileOld.orgRoot.orgRootShortName - : "", + : "-", profileFullname: posMaster.next_holder == null ? "- ว่าง -" @@ -609,10 +639,10 @@ export class ReportController extends Controller { profilePosMasterNo: posMaster.next_holder == null ? positionMasterOld == null - ? "" + ? "-" : positionMasterOld.posMasterNo : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.posMasterNo, profilePositionName: posMaster.next_holder == null @@ -626,7 +656,7 @@ export class ReportController extends Controller { ? posType.join(" หรือ ") : profilePosType.join(" หรือ ") : posMaster.next_holder.posType == null - ? "" + ? "-" : posMaster.next_holder.posType.posTypeName, profilePosLevel: posMaster.next_holder == null @@ -634,7 +664,7 @@ export class ReportController extends Controller { ? posLevel.join(" หรือ ") : profilePosLevel.join(" หรือ ") : posMaster.next_holder.posLevel == null - ? "" + ? "-" : posMaster.next_holder.posLevel.posLevelName, profilePosExecutive: posMaster.next_holder == null @@ -642,7 +672,7 @@ export class ReportController extends Controller { ? posExecutive.join(" หรือ ") : profilePosExecutive.join(" หรือ ") : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.positions.find( (x: any) => (x.positionIsSelected = true), )?.posExecutive?.posExecutiveName, @@ -650,19 +680,20 @@ export class ReportController extends Controller { if (_node == null) { const head = { posMasterNo: node.orgTreeShortName, - profileFullname: node.orgTreeName, - posExecutive: "", + profileFullname: node.profileOrgName, + posExecutive: node.orgTreeName, positionName: "", posType: "", posLevel: "", profilePosMasterNo: node.profileOrgShortName, - profilePosExecutive: node.profileOrgName, + profilePosExecutive: "", profilePositionName: "", profilePosType: "", profilePosLevel: "", }; data.push(head); const _head = { + no: no, posMasterNo: node.posMasterNo, profileFullname: node.profileFullname, posExecutive: node.posExecutive, @@ -678,9 +709,9 @@ export class ReportController extends Controller { data.push(_head); } else { if ( - node.orgTreeShortName != _node.orgTreeShortName && - node.orgTreeName != _node.orgTreeName && - node.profileOrgShortName != _node.profileOrgShortName && + node.orgTreeShortName != _node.orgTreeShortName || + node.orgTreeName != _node.orgTreeName || + node.profileOrgShortName != _node.profileOrgShortName || node.profileOrgName != _node.profileOrgName ) { const head = { @@ -689,8 +720,8 @@ export class ReportController extends Controller { ? "" : node.orgTreeShortName, profileFullname: - node.orgTreeName == _node.orgTreeName ? "" : node.orgTreeName, - posExecutive: "", + node.profileOrgName == _node.profileOrgName ? "" : node.profileOrgName, + posExecutive: node.orgTreeName == _node.orgTreeName ? "" : node.orgTreeName, positionName: "", posType: "", posLevel: "", @@ -698,8 +729,7 @@ export class ReportController extends Controller { node.profileOrgShortName == _node.profileOrgShortName ? "" : node.profileOrgShortName, - profilePosExecutive: - node.profileOrgName == _node.profileOrgName ? "" : node.profileOrgName, + profilePosExecutive: "", profilePositionName: "", profilePosType: "", profilePosLevel: "", @@ -708,6 +738,7 @@ export class ReportController extends Controller { _node == null; } const head = { + no: no, posMasterNo: node.posMasterNo == _node.posMasterNo ? "" : node.posMasterNo, profileFullname: node.profileFullname, posExecutive: @@ -735,6 +766,7 @@ export class ReportController extends Controller { }; data.push(head); } + no += 1; _node = node; } }), @@ -748,274 +780,7 @@ export class ReportController extends Controller { orgChild2.posMasters .sort((a, b) => a.posMasterOrder - b.posMasterOrder) .map(async (posMaster) => { - const positionName = [...new Set(posMaster.positions.map((x) => x.positionName))]; - const posType = [ - ...new Set(posMaster.positions.map((x) => x.posType.posTypeName)), - ]; - const posLevel = [ - ...new Set(posMaster.positions.map((x) => x.posLevel.posLevelName)), - ]; - const posExecutive = [ - ...new Set(posMaster.positions.map((x) => x.posExecutive.posExecutiveName)), - ]; - let positionMasterProfileOld: any = null; - if (posMaster.next_holder != null) { - positionMasterProfileOld = posMaster.next_holder.current_holders.find( - (x) => x.orgRevisionId == orgRevisionActive.id, - ); - } - - let positionMasterOld: any = null; - let profilePositionName: any = []; - let profilePosType: any = []; - let profilePosLevel: any = []; - let profilePosExecutive: any = []; - if (posMaster.ancestorDNA != null) { - positionMasterOld = orgRevisionActive.posMasters.find( - (x: any) => - x.orgRevisionId == orgRevisionActive.id && - x.ancestorDNA == posMaster.ancestorDNA, - ); - profilePositionName = [ - ...new Set(positionMasterOld.positions.map((x: any) => x.positionName)), - ]; - profilePosType = [ - ...new Set( - positionMasterOld.positions.map((x: any) => x.posType.posTypeName), - ), - ]; - profilePosLevel = [ - ...new Set( - positionMasterOld.positions.map((x: any) => x.posLevel.posLevelName), - ), - ]; - profilePosExecutive = [ - ...new Set( - positionMasterOld.positions.map( - (x: any) => x.posExecutive.posExecutiveName, - ), - ), - ]; - } - - let node = { - posMasterOrder: posMaster.posMasterOrder, // - isSit: posMaster.isSit, // - orgTreeName: orgChild2.orgChild2Name, - orgTreeShortName: orgChild2.orgChild2ShortName, - posMasterNo: posMaster.posMasterNo, - positionName: - posMaster.next_holder == null - ? positionName.join(" หรือ ") - : posMaster.isSit == false - ? posMaster.positions.find((x: any) => (x.isSit = true))?.positionName - : posMaster.next_holder.position, - posType: - posMaster.next_holder == null - ? posType.join(" หรือ ") - : posMaster.isSit == false - ? posMaster.positions.find((x: any) => (x.isSit = true))?.posType - ?.posTypeName - : posMaster.next_holder.posType == null - ? "" - : posMaster.next_holder.posType.posTypeName, - posLevel: - posMaster.next_holder == null - ? posLevel.join(" หรือ ") - : posMaster.isSit == false - ? posMaster.positions.find((x: any) => (x.isSit = true))?.posLevel - ?.posLevelName - : posMaster.next_holder.posLevel == null - ? "" - : posMaster.next_holder.posLevel.posLevelName, - posExecutive: - posMaster.next_holder == null - ? posExecutive.join(" หรือ ") - : posMaster.isSit == false - ? posMaster.positions.find((x: any) => (x.isSit = true))?.posExecutive - ?.posExecutiveName - : positionMasterProfileOld == null - ? "" - : positionMasterProfileOld.positions.find((x: any) => (x.isSit = true)) - ?.posExecutive?.posExecutiveName, - - profileOrgName: - posMaster.next_holder == null - ? orgChild2.orgChild2Name - : positionMasterProfileOld == null - ? "" - : positionMasterProfileOld.orgChild4 != null - ? positionMasterProfileOld.orgChild4.orgChild4Name - : positionMasterProfileOld.orgChild3 != null - ? positionMasterProfileOld.orgChild3.orgChild3Name - : positionMasterProfileOld.orgChild2 != null - ? positionMasterProfileOld.orgChild2.orgChild2Name - : positionMasterProfileOld.orgChild1 != null - ? positionMasterProfileOld.orgChild1.orgChild1Name - : positionMasterProfileOld.orgRoot != null - ? positionMasterProfileOld.orgRoot.orgRootName - : "", - profileOrgShortName: - posMaster.next_holder == null - ? orgChild2.orgChild2ShortName - : positionMasterProfileOld == null - ? "" - : positionMasterProfileOld.orgChild4 != null - ? positionMasterProfileOld.orgChild4.orgChild4ShortName - : positionMasterProfileOld.orgChild3 != null - ? positionMasterProfileOld.orgChild3.orgChild3ShortName - : positionMasterProfileOld.orgChild2 != null - ? positionMasterProfileOld.orgChild2.orgChild2ShortName - : positionMasterProfileOld.orgChild1 != null - ? positionMasterProfileOld.orgChild1.orgChild1ShortName - : positionMasterProfileOld.orgRoot != null - ? positionMasterProfileOld.orgRoot.orgRootShortName - : "", - profileFullname: - posMaster.next_holder == null - ? "- ว่าง -" - : `${posMaster.next_holder.prefix}${posMaster.next_holder.firstName} ${posMaster.next_holder.lastName}`, - profilePosMasterNo: - posMaster.next_holder == null - ? positionMasterOld == null - ? "" - : positionMasterOld.posMasterNo - : positionMasterProfileOld == null - ? "" - : positionMasterProfileOld.posMasterNo, - profilePositionName: - posMaster.next_holder == null - ? positionMasterOld == null - ? positionName.join(" หรือ ") - : profilePositionName.join(" หรือ ") - : posMaster.next_holder.position, - profilePosType: - posMaster.next_holder == null - ? positionMasterOld == null - ? posType.join(" หรือ ") - : profilePosType.join(" หรือ ") - : posMaster.next_holder.posType == null - ? "" - : posMaster.next_holder.posType.posTypeName, - profilePosLevel: - posMaster.next_holder == null - ? positionMasterOld == null - ? posLevel.join(" หรือ ") - : profilePosLevel.join(" หรือ ") - : posMaster.next_holder.posLevel == null - ? "" - : posMaster.next_holder.posLevel.posLevelName, - profilePosExecutive: - posMaster.next_holder == null - ? positionMasterOld == null - ? posExecutive.join(" หรือ ") - : profilePosExecutive.join(" หรือ ") - : positionMasterProfileOld == null - ? "" - : positionMasterProfileOld.positions.find( - (x: any) => (x.positionIsSelected = true), - )?.posExecutive?.posExecutiveName, - }; - if (_node == null) { - const head = { - posMasterNo: node.orgTreeShortName, - profileFullname: node.orgTreeName, - posExecutive: "", - positionName: "", - posType: "", - posLevel: "", - profilePosMasterNo: node.profileOrgShortName, - profilePosExecutive: node.profileOrgName, - profilePositionName: "", - profilePosType: "", - profilePosLevel: "", - }; - data.push(head); - const _head = { - posMasterNo: node.posMasterNo, - profileFullname: node.profileFullname, - posExecutive: node.posExecutive, - positionName: node.positionName, - posType: node.posType, - posLevel: node.posLevel, - profilePosMasterNo: node.profilePosMasterNo, - profilePosExecutive: node.profilePosExecutive, - profilePositionName: node.profilePositionName, - profilePosType: node.profilePosType, - profilePosLevel: node.profilePosLevel, - }; - data.push(_head); - } else { - if ( - node.orgTreeShortName != _node.orgTreeShortName && - node.orgTreeName != _node.orgTreeName && - node.profileOrgShortName != _node.profileOrgShortName && - node.profileOrgName != _node.profileOrgName - ) { - const head = { - posMasterNo: - node.orgTreeShortName == _node.orgTreeShortName - ? "" - : node.orgTreeShortName, - profileFullname: - node.orgTreeName == _node.orgTreeName ? "" : node.orgTreeName, - posExecutive: "", - positionName: "", - posType: "", - posLevel: "", - profilePosMasterNo: - node.profileOrgShortName == _node.profileOrgShortName - ? "" - : node.profileOrgShortName, - profilePosExecutive: - node.profileOrgName == _node.profileOrgName ? "" : node.profileOrgName, - profilePositionName: "", - profilePosType: "", - profilePosLevel: "", - }; - data.push(head); - _node == null; - } - const head = { - posMasterNo: node.posMasterNo == _node.posMasterNo ? "" : node.posMasterNo, - profileFullname: node.profileFullname, - posExecutive: - node.posExecutive == _node.posExecutive ? "" : node.posExecutive, - positionName: - node.positionName == _node.positionName ? "" : node.positionName, - posType: node.posType == _node.posType ? "" : node.posType, - posLevel: node.posLevel == _node.posLevel ? "" : node.posLevel, - profilePosMasterNo: - node.profilePosMasterNo == _node.profilePosMasterNo - ? "" - : node.profilePosMasterNo, - profilePosExecutive: - node.profilePosExecutive == _node.profilePosExecutive - ? "" - : node.profilePosExecutive, - profilePositionName: - node.profilePositionName == _node.profilePositionName - ? "" - : node.profilePositionName, - profilePosType: - node.profilePosType == _node.profilePosType ? "" : node.profilePosType, - profilePosLevel: - node.profilePosLevel == _node.profilePosLevel ? "" : node.profilePosLevel, - }; - data.push(head); - } - _node = node; - }), - ); - _node = null; - - for (let orgChild3 of orgChild3Data.filter( - (orgChild3) => orgChild3.orgChild2Id === orgChild2.id, - )) { - await Promise.all( - orgChild3.posMasters - .sort((a, b) => a.posMasterOrder - b.posMasterOrder) - .map(async (posMaster) => { + if (posMaster.orgChild3 == null) { const positionName = [ ...new Set(posMaster.positions.map((x) => x.positionName)), ]; @@ -1071,8 +836,8 @@ export class ReportController extends Controller { let node = { posMasterOrder: posMaster.posMasterOrder, // isSit: posMaster.isSit, // - orgTreeName: orgChild3.orgChild3Name, - orgTreeShortName: orgChild3.orgChild3ShortName, + orgTreeName: orgChild2.orgChild2Name, + orgTreeShortName: orgChild2.orgChild2ShortName, posMasterNo: posMaster.posMasterNo, positionName: posMaster.next_holder == null @@ -1087,7 +852,7 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posType ?.posTypeName : posMaster.next_holder.posType == null - ? "" + ? "-" : posMaster.next_holder.posType.posTypeName, posLevel: posMaster.next_holder == null @@ -1096,7 +861,7 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posLevel ?.posLevelName : posMaster.next_holder.posLevel == null - ? "" + ? "-" : posMaster.next_holder.posLevel.posLevelName, posExecutive: posMaster.next_holder == null @@ -1105,16 +870,16 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posExecutive ?.posExecutiveName : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.positions.find( (x: any) => (x.isSit = true), )?.posExecutive?.posExecutiveName, profileOrgName: posMaster.next_holder == null - ? orgChild3.orgChild3Name + ? orgChild2.orgChild2Name : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.orgChild4 != null ? positionMasterProfileOld.orgChild4.orgChild4Name : positionMasterProfileOld.orgChild3 != null @@ -1125,12 +890,12 @@ export class ReportController extends Controller { ? positionMasterProfileOld.orgChild1.orgChild1Name : positionMasterProfileOld.orgRoot != null ? positionMasterProfileOld.orgRoot.orgRootName - : "", + : "-", profileOrgShortName: posMaster.next_holder == null - ? orgChild3.orgChild3ShortName + ? orgChild2.orgChild2ShortName : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.orgChild4 != null ? positionMasterProfileOld.orgChild4.orgChild4ShortName : positionMasterProfileOld.orgChild3 != null @@ -1141,7 +906,7 @@ export class ReportController extends Controller { ? positionMasterProfileOld.orgChild1.orgChild1ShortName : positionMasterProfileOld.orgRoot != null ? positionMasterProfileOld.orgRoot.orgRootShortName - : "", + : "-", profileFullname: posMaster.next_holder == null ? "- ว่าง -" @@ -1149,10 +914,10 @@ export class ReportController extends Controller { profilePosMasterNo: posMaster.next_holder == null ? positionMasterOld == null - ? "" + ? "-" : positionMasterOld.posMasterNo : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.posMasterNo, profilePositionName: posMaster.next_holder == null @@ -1166,7 +931,7 @@ export class ReportController extends Controller { ? posType.join(" หรือ ") : profilePosType.join(" หรือ ") : posMaster.next_holder.posType == null - ? "" + ? "-" : posMaster.next_holder.posType.posTypeName, profilePosLevel: posMaster.next_holder == null @@ -1174,7 +939,7 @@ export class ReportController extends Controller { ? posLevel.join(" หรือ ") : profilePosLevel.join(" หรือ ") : posMaster.next_holder.posLevel == null - ? "" + ? "-" : posMaster.next_holder.posLevel.posLevelName, profilePosExecutive: posMaster.next_holder == null @@ -1182,7 +947,7 @@ export class ReportController extends Controller { ? posExecutive.join(" หรือ ") : profilePosExecutive.join(" หรือ ") : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.positions.find( (x: any) => (x.positionIsSelected = true), )?.posExecutive?.posExecutiveName, @@ -1190,19 +955,20 @@ export class ReportController extends Controller { if (_node == null) { const head = { posMasterNo: node.orgTreeShortName, - profileFullname: node.orgTreeName, - posExecutive: "", + profileFullname: node.profileOrgName, + posExecutive: node.orgTreeName, positionName: "", posType: "", posLevel: "", profilePosMasterNo: node.profileOrgShortName, - profilePosExecutive: node.profileOrgName, + profilePosExecutive: "", profilePositionName: "", profilePosType: "", profilePosLevel: "", }; data.push(head); const _head = { + no: no, posMasterNo: node.posMasterNo, profileFullname: node.profileFullname, posExecutive: node.posExecutive, @@ -1218,9 +984,9 @@ export class ReportController extends Controller { data.push(_head); } else { if ( - node.orgTreeShortName != _node.orgTreeShortName && - node.orgTreeName != _node.orgTreeName && - node.profileOrgShortName != _node.profileOrgShortName && + node.orgTreeShortName != _node.orgTreeShortName || + node.orgTreeName != _node.orgTreeName || + node.profileOrgShortName != _node.profileOrgShortName || node.profileOrgName != _node.profileOrgName ) { const head = { @@ -1229,8 +995,9 @@ export class ReportController extends Controller { ? "" : node.orgTreeShortName, profileFullname: + node.profileOrgName == _node.profileOrgName ? "" : node.profileOrgName, + posExecutive: node.orgTreeName == _node.orgTreeName ? "" : node.orgTreeName, - posExecutive: "", positionName: "", posType: "", posLevel: "", @@ -1238,8 +1005,7 @@ export class ReportController extends Controller { node.profileOrgShortName == _node.profileOrgShortName ? "" : node.profileOrgShortName, - profilePosExecutive: - node.profileOrgName == _node.profileOrgName ? "" : node.profileOrgName, + profilePosExecutive: "", profilePositionName: "", profilePosType: "", profilePosLevel: "", @@ -1248,6 +1014,7 @@ export class ReportController extends Controller { _node == null; } const head = { + no: no, posMasterNo: node.posMasterNo == _node.posMasterNo ? "" : node.posMasterNo, profileFullname: node.profileFullname, posExecutive: @@ -1275,7 +1042,290 @@ export class ReportController extends Controller { }; data.push(head); } + no += 1; _node = node; + } + }), + ); + _node = null; + + for (let orgChild3 of orgChild3Data.filter( + (orgChild3) => orgChild3.orgChild2Id === orgChild2.id, + )) { + await Promise.all( + orgChild3.posMasters + .sort((a, b) => a.posMasterOrder - b.posMasterOrder) + .map(async (posMaster) => { + if (posMaster.orgChild3 == null) { + const positionName = [ + ...new Set(posMaster.positions.map((x) => x.positionName)), + ]; + const posType = [ + ...new Set(posMaster.positions.map((x) => x.posType.posTypeName)), + ]; + const posLevel = [ + ...new Set(posMaster.positions.map((x) => x.posLevel.posLevelName)), + ]; + const posExecutive = [ + ...new Set(posMaster.positions.map((x) => x.posExecutive.posExecutiveName)), + ]; + let positionMasterProfileOld: any = null; + if (posMaster.next_holder != null) { + positionMasterProfileOld = posMaster.next_holder.current_holders.find( + (x) => x.orgRevisionId == orgRevisionActive.id, + ); + } + + let positionMasterOld: any = null; + let profilePositionName: any = []; + let profilePosType: any = []; + let profilePosLevel: any = []; + let profilePosExecutive: any = []; + if (posMaster.ancestorDNA != null) { + positionMasterOld = orgRevisionActive.posMasters.find( + (x: any) => + x.orgRevisionId == orgRevisionActive.id && + x.ancestorDNA == posMaster.ancestorDNA, + ); + profilePositionName = [ + ...new Set(positionMasterOld.positions.map((x: any) => x.positionName)), + ]; + profilePosType = [ + ...new Set( + positionMasterOld.positions.map((x: any) => x.posType.posTypeName), + ), + ]; + profilePosLevel = [ + ...new Set( + positionMasterOld.positions.map((x: any) => x.posLevel.posLevelName), + ), + ]; + profilePosExecutive = [ + ...new Set( + positionMasterOld.positions.map( + (x: any) => x.posExecutive.posExecutiveName, + ), + ), + ]; + } + + let node = { + posMasterOrder: posMaster.posMasterOrder, // + isSit: posMaster.isSit, // + orgTreeName: orgChild3.orgChild3Name, + orgTreeShortName: orgChild3.orgChild3ShortName, + posMasterNo: posMaster.posMasterNo, + positionName: + posMaster.next_holder == null + ? positionName.join(" หรือ ") + : posMaster.isSit == false + ? posMaster.positions.find((x: any) => (x.isSit = true))?.positionName + : posMaster.next_holder.position, + posType: + posMaster.next_holder == null + ? posType.join(" หรือ ") + : posMaster.isSit == false + ? posMaster.positions.find((x: any) => (x.isSit = true))?.posType + ?.posTypeName + : posMaster.next_holder.posType == null + ? "-" + : posMaster.next_holder.posType.posTypeName, + posLevel: + posMaster.next_holder == null + ? posLevel.join(" หรือ ") + : posMaster.isSit == false + ? posMaster.positions.find((x: any) => (x.isSit = true))?.posLevel + ?.posLevelName + : posMaster.next_holder.posLevel == null + ? "-" + : posMaster.next_holder.posLevel.posLevelName, + posExecutive: + posMaster.next_holder == null + ? posExecutive.join(" หรือ ") + : posMaster.isSit == false + ? posMaster.positions.find((x: any) => (x.isSit = true))?.posExecutive + ?.posExecutiveName + : positionMasterProfileOld == null + ? "-" + : positionMasterProfileOld.positions.find( + (x: any) => (x.isSit = true), + )?.posExecutive?.posExecutiveName, + + profileOrgName: + posMaster.next_holder == null + ? orgChild3.orgChild3Name + : positionMasterProfileOld == null + ? "-" + : positionMasterProfileOld.orgChild4 != null + ? positionMasterProfileOld.orgChild4.orgChild4Name + : positionMasterProfileOld.orgChild3 != null + ? positionMasterProfileOld.orgChild3.orgChild3Name + : positionMasterProfileOld.orgChild2 != null + ? positionMasterProfileOld.orgChild2.orgChild2Name + : positionMasterProfileOld.orgChild1 != null + ? positionMasterProfileOld.orgChild1.orgChild1Name + : positionMasterProfileOld.orgRoot != null + ? positionMasterProfileOld.orgRoot.orgRootName + : "-", + profileOrgShortName: + posMaster.next_holder == null + ? orgChild3.orgChild3ShortName + : positionMasterProfileOld == null + ? "-" + : positionMasterProfileOld.orgChild4 != null + ? positionMasterProfileOld.orgChild4.orgChild4ShortName + : positionMasterProfileOld.orgChild3 != null + ? positionMasterProfileOld.orgChild3.orgChild3ShortName + : positionMasterProfileOld.orgChild2 != null + ? positionMasterProfileOld.orgChild2.orgChild2ShortName + : positionMasterProfileOld.orgChild1 != null + ? positionMasterProfileOld.orgChild1.orgChild1ShortName + : positionMasterProfileOld.orgRoot != null + ? positionMasterProfileOld.orgRoot.orgRootShortName + : "-", + profileFullname: + posMaster.next_holder == null + ? "- ว่าง -" + : `${posMaster.next_holder.prefix}${posMaster.next_holder.firstName} ${posMaster.next_holder.lastName}`, + profilePosMasterNo: + posMaster.next_holder == null + ? positionMasterOld == null + ? "-" + : positionMasterOld.posMasterNo + : positionMasterProfileOld == null + ? "-" + : positionMasterProfileOld.posMasterNo, + profilePositionName: + posMaster.next_holder == null + ? positionMasterOld == null + ? positionName.join(" หรือ ") + : profilePositionName.join(" หรือ ") + : posMaster.next_holder.position, + profilePosType: + posMaster.next_holder == null + ? positionMasterOld == null + ? posType.join(" หรือ ") + : profilePosType.join(" หรือ ") + : posMaster.next_holder.posType == null + ? "-" + : posMaster.next_holder.posType.posTypeName, + profilePosLevel: + posMaster.next_holder == null + ? positionMasterOld == null + ? posLevel.join(" หรือ ") + : profilePosLevel.join(" หรือ ") + : posMaster.next_holder.posLevel == null + ? "-" + : posMaster.next_holder.posLevel.posLevelName, + profilePosExecutive: + posMaster.next_holder == null + ? positionMasterOld == null + ? posExecutive.join(" หรือ ") + : profilePosExecutive.join(" หรือ ") + : positionMasterProfileOld == null + ? "-" + : positionMasterProfileOld.positions.find( + (x: any) => (x.positionIsSelected = true), + )?.posExecutive?.posExecutiveName, + }; + if (_node == null) { + const head = { + posMasterNo: node.orgTreeShortName, + profileFullname: node.profileOrgName, + posExecutive: node.orgTreeName, + positionName: "", + posType: "", + posLevel: "", + profilePosMasterNo: node.profileOrgShortName, + profilePosExecutive: "", + profilePositionName: "", + profilePosType: "", + profilePosLevel: "", + }; + data.push(head); + const _head = { + no: no, + posMasterNo: node.posMasterNo, + profileFullname: node.profileFullname, + posExecutive: node.posExecutive, + positionName: node.positionName, + posType: node.posType, + posLevel: node.posLevel, + profilePosMasterNo: node.profilePosMasterNo, + profilePosExecutive: node.profilePosExecutive, + profilePositionName: node.profilePositionName, + profilePosType: node.profilePosType, + profilePosLevel: node.profilePosLevel, + }; + data.push(_head); + } else { + if ( + node.orgTreeShortName != _node.orgTreeShortName || + node.orgTreeName != _node.orgTreeName || + node.profileOrgShortName != _node.profileOrgShortName || + node.profileOrgName != _node.profileOrgName + ) { + const head = { + posMasterNo: + node.orgTreeShortName == _node.orgTreeShortName + ? "" + : node.orgTreeShortName, + profileFullname: + node.profileOrgName == _node.profileOrgName + ? "" + : node.profileOrgName, + posExecutive: + node.orgTreeName == _node.orgTreeName ? "" : node.orgTreeName, + positionName: "", + posType: "", + posLevel: "", + profilePosMasterNo: + node.profileOrgShortName == _node.profileOrgShortName + ? "" + : node.profileOrgShortName, + profilePosExecutive: "", + profilePositionName: "", + profilePosType: "", + profilePosLevel: "", + }; + data.push(head); + _node == null; + } + const head = { + no: no, + posMasterNo: + node.posMasterNo == _node.posMasterNo ? "" : node.posMasterNo, + profileFullname: node.profileFullname, + posExecutive: + node.posExecutive == _node.posExecutive ? "" : node.posExecutive, + positionName: + node.positionName == _node.positionName ? "" : node.positionName, + posType: node.posType == _node.posType ? "" : node.posType, + posLevel: node.posLevel == _node.posLevel ? "" : node.posLevel, + profilePosMasterNo: + node.profilePosMasterNo == _node.profilePosMasterNo + ? "" + : node.profilePosMasterNo, + profilePosExecutive: + node.profilePosExecutive == _node.profilePosExecutive + ? "" + : node.profilePosExecutive, + profilePositionName: + node.profilePositionName == _node.profilePositionName + ? "" + : node.profilePositionName, + profilePosType: + node.profilePosType == _node.profilePosType ? "" : node.profilePosType, + profilePosLevel: + node.profilePosLevel == _node.profilePosLevel + ? "" + : node.profilePosLevel, + }; + data.push(head); + } + no += 1; + _node = node; + } }), ); _node = null; @@ -1358,7 +1408,7 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posType ?.posTypeName : posMaster.next_holder.posType == null - ? "" + ? "-" : posMaster.next_holder.posType.posTypeName, posLevel: posMaster.next_holder == null @@ -1367,7 +1417,7 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posLevel ?.posLevelName : posMaster.next_holder.posLevel == null - ? "" + ? "-" : posMaster.next_holder.posLevel.posLevelName, posExecutive: posMaster.next_holder == null @@ -1376,7 +1426,7 @@ export class ReportController extends Controller { ? posMaster.positions.find((x: any) => (x.isSit = true))?.posExecutive ?.posExecutiveName : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.positions.find( (x: any) => (x.isSit = true), )?.posExecutive?.posExecutiveName, @@ -1385,7 +1435,7 @@ export class ReportController extends Controller { posMaster.next_holder == null ? orgChild4.orgChild4Name : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.orgChild4 != null ? positionMasterProfileOld.orgChild4.orgChild4Name : positionMasterProfileOld.orgChild3 != null @@ -1396,12 +1446,12 @@ export class ReportController extends Controller { ? positionMasterProfileOld.orgChild1.orgChild1Name : positionMasterProfileOld.orgRoot != null ? positionMasterProfileOld.orgRoot.orgRootName - : "", + : "-", profileOrgShortName: posMaster.next_holder == null ? orgChild4.orgChild4ShortName : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.orgChild4 != null ? positionMasterProfileOld.orgChild4.orgChild4ShortName : positionMasterProfileOld.orgChild3 != null @@ -1412,7 +1462,7 @@ export class ReportController extends Controller { ? positionMasterProfileOld.orgChild1.orgChild1ShortName : positionMasterProfileOld.orgRoot != null ? positionMasterProfileOld.orgRoot.orgRootShortName - : "", + : "-", profileFullname: posMaster.next_holder == null ? "- ว่าง -" @@ -1420,10 +1470,10 @@ export class ReportController extends Controller { profilePosMasterNo: posMaster.next_holder == null ? positionMasterOld == null - ? "" + ? "-" : positionMasterOld.posMasterNo : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.posMasterNo, profilePositionName: posMaster.next_holder == null @@ -1437,7 +1487,7 @@ export class ReportController extends Controller { ? posType.join(" หรือ ") : profilePosType.join(" หรือ ") : posMaster.next_holder.posType == null - ? "" + ? "-" : posMaster.next_holder.posType.posTypeName, profilePosLevel: posMaster.next_holder == null @@ -1445,7 +1495,7 @@ export class ReportController extends Controller { ? posLevel.join(" หรือ ") : profilePosLevel.join(" หรือ ") : posMaster.next_holder.posLevel == null - ? "" + ? "-" : posMaster.next_holder.posLevel.posLevelName, profilePosExecutive: posMaster.next_holder == null @@ -1453,7 +1503,7 @@ export class ReportController extends Controller { ? posExecutive.join(" หรือ ") : profilePosExecutive.join(" หรือ ") : positionMasterProfileOld == null - ? "" + ? "-" : positionMasterProfileOld.positions.find( (x: any) => (x.positionIsSelected = true), )?.posExecutive?.posExecutiveName, @@ -1461,19 +1511,20 @@ export class ReportController extends Controller { if (_node == null) { const head = { posMasterNo: node.orgTreeShortName, - profileFullname: node.orgTreeName, - posExecutive: "", + profileFullname: node.profileOrgName, + posExecutive: node.orgTreeName, positionName: "", posType: "", posLevel: "", profilePosMasterNo: node.profileOrgShortName, - profilePosExecutive: node.profileOrgName, + profilePosExecutive: "", profilePositionName: "", profilePosType: "", profilePosLevel: "", }; data.push(head); const _head = { + no: no, posMasterNo: node.posMasterNo, profileFullname: node.profileFullname, posExecutive: node.posExecutive, @@ -1489,9 +1540,9 @@ export class ReportController extends Controller { data.push(_head); } else { if ( - node.orgTreeShortName != _node.orgTreeShortName && - node.orgTreeName != _node.orgTreeName && - node.profileOrgShortName != _node.profileOrgShortName && + node.orgTreeShortName != _node.orgTreeShortName || + node.orgTreeName != _node.orgTreeName || + node.profileOrgShortName != _node.profileOrgShortName || node.profileOrgName != _node.profileOrgName ) { const head = { @@ -1500,8 +1551,11 @@ export class ReportController extends Controller { ? "" : node.orgTreeShortName, profileFullname: + node.profileOrgName == _node.profileOrgName + ? "" + : node.profileOrgName, + posExecutive: node.orgTreeName == _node.orgTreeName ? "" : node.orgTreeName, - posExecutive: "", positionName: "", posType: "", posLevel: "", @@ -1509,10 +1563,7 @@ export class ReportController extends Controller { node.profileOrgShortName == _node.profileOrgShortName ? "" : node.profileOrgShortName, - profilePosExecutive: - node.profileOrgName == _node.profileOrgName - ? "" - : node.profileOrgName, + profilePosExecutive: "", profilePositionName: "", profilePosType: "", profilePosLevel: "", @@ -1521,6 +1572,7 @@ export class ReportController extends Controller { _node == null; } const head = { + no: no, posMasterNo: node.posMasterNo == _node.posMasterNo ? "" : node.posMasterNo, profileFullname: node.profileFullname, @@ -1551,6 +1603,7 @@ export class ReportController extends Controller { }; data.push(head); } + no += 1; _node = node; }), );