diff --git a/src/controllers/EmployeePosLevelController.ts b/src/controllers/EmployeePosLevelController.ts new file mode 100644 index 00000000..09a70f2d --- /dev/null +++ b/src/controllers/EmployeePosLevelController.ts @@ -0,0 +1,190 @@ +import { + Controller, + Get, + Post, + Put, + Delete, + Route, + Security, + Tags, + Body, + Path, + Request, + SuccessResponse, + Response, +} from "tsoa"; +import { AppDataSource } from "../database/data-source"; +import HttpSuccess from "../interfaces/http-success"; +import HttpStatusCode from "../interfaces/http-status"; +import HttpError from "../interfaces/http-error"; +import { Not } from "typeorm"; +import { EmployeePosType,} from "../entities/EmployeePosType"; +import { EmployeePosLevel, CreateEmployeePosLevel, UpdateEmployeePosLevel } from "../entities/EmployeePosLevel"; +import { EmployeePosDict } from "../entities/EmployeePosDict"; + +@Route("api/v1/org/employee/pos/level") +@Tags("EmployeePosLevel") +@Security("bearerAuth") +@Response( + HttpStatusCode.INTERNAL_SERVER_ERROR, + "เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง", +) +@SuccessResponse(HttpStatusCode.OK, "สำเร็จ") +export class EmployeePosLevelController extends Controller { + + private employeePosDictRepository = AppDataSource.getRepository(EmployeePosDict); + private employeePosTypeRepository = AppDataSource.getRepository(EmployeePosType); + private employeePosLevelRepository = AppDataSource.getRepository(EmployeePosLevel); + + /** + * API เพิ่มระดับชั้นงานลูกจ้างประจำ + * + * @summary ORG_ - เพิ่มระดับชั้นงานลูกจ้างประจำ (ADMIN) # + * + */ + @Post() + async CreateEmpLevel( + @Body() + requestBody: CreateEmployeePosLevel, + @Request() request: { user: Record }, + ) { + const EmpPosLevel = Object.assign(new EmployeePosLevel(), requestBody); + if (!EmpPosLevel) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); + } + + const EmpPosType = await this.employeePosTypeRepository.findOne({ + where: { id: requestBody.employeePosTypeId } + }); + if (!EmpPosType) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประเภทกลุ่มงานลูกจ้างประจำนี้"); + } + + const chkEmpPosLevelName = await this.employeePosLevelRepository.findOne({ + where: { + posLevelName: requestBody.posLevelName, + }, + }); + if (chkEmpPosLevelName) { + throw new HttpError( + HttpStatusCode.NOT_FOUND, + "ชื่อระดับชั้นงานลูกจ้างประจำนี้มีอยู่ในระบบแล้ว", + ); + } + + EmpPosLevel.createdUserId = request.user.sub; + EmpPosLevel.createdFullName = request.user.name; + EmpPosLevel.lastUpdateUserId = request.user.sub; + EmpPosLevel.lastUpdateFullName = request.user.name; + await this.employeePosLevelRepository.save(EmpPosLevel); + return new HttpSuccess(EmpPosLevel.id); + } + + /** + * API แก้ไขระดับชั้นงานลูกจ้างประจำ + * + * @summary ORG_ - แก้ไขระดับชั้นงานลูกจ้างประจำ (ADMIN) # + * + * @param {string} id Id ระดับชั้นงานลูกจ้างประจำ + */ + @Put("{id}") + async EditEmpLevel( + @Path() id: string, + @Body() requestBody: UpdateEmployeePosLevel, + @Request() request: { user: Record }, + ) { + const EmpPosLevel = await this.employeePosLevelRepository.findOne({ where: { id } }); + if (!EmpPosLevel) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลระดับชั้นงานลูกจ้างประจำนี้"); + } + + const EmpPosType = await this.employeePosTypeRepository.findOne({ + where: { id: requestBody.employeePosTypeId } + }); + if (!EmpPosType) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประเภทกลุ่มงานลูกจ้างประจำนี้"); + } + + const chkEmpPosLevel = await this.employeePosLevelRepository.findOne({ + where: { + id: Not(id), + posLevelName: requestBody.posLevelName, + }, + }); + if (chkEmpPosLevel) { + throw new HttpError( + HttpStatusCode.NOT_FOUND, + "ชื่อระดับชั้นงานลูกจ้างประจำนี้มีอยู่ในระบบแล้ว", + ); + } + EmpPosLevel.lastUpdateUserId = request.user.sub; + EmpPosLevel.lastUpdateFullName = request.user.name; + this.employeePosLevelRepository.merge(EmpPosLevel, requestBody); + await this.employeePosLevelRepository.save(EmpPosLevel); + return new HttpSuccess(EmpPosLevel.id); + } + + /** + * API ลบระดับชั้นงานลูกจ้างประจำ + * + * @summary ORG_ - ลบระดับชั้นงานลูกจ้างประจำ (ADMIN) # + * + * @param {string} id Id ระดับชั้นงานลูกจ้างประจำ + */ + @Delete("{id}") + async deleteType(@Path() id: string) { + const delEmpPosLevel = await this.employeePosLevelRepository.findOne({ where: { id } }); + if (!delEmpPosLevel) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลระดับชั้นงานลูกจ้างประจำนี้"); + } + + //ตารางตำแหน่งลูกจ้างประจำ + const EmpPosition = await this.employeePosDictRepository.find({ + where: { employeePosLevelId: id }, + }); + if (EmpPosition.length > 0) { + throw new HttpError( + HttpStatusCode.NOT_FOUND, + "ไม่สามารถลบได้เนื่องจากพบข้อมูลที่ตารางตำแหน่งลูกจ้างประจำ", + ); + } + + await this.employeePosLevelRepository.remove(delEmpPosLevel); + return new HttpSuccess(); + } + + /** + * API รายละเอียดระดับชั้นงานลูกจ้างประจำ + * + * @summary ORG_ - รายละเอียดระดับชั้นงานลูกจ้างประจำ (ADMIN) # + * + * @param {string} id Id ระดับชั้นงานลูกจ้างประจำ + */ + @Get("{id}") + async GetEmpLevelById(@Path() id: string) { + const getEmpPosLevel = await this.employeePosLevelRepository.findOne({ + select: ["id", "posLevelName", "posLevelRank",], + where: { id: id }, + }); + if (!getEmpPosLevel) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลระดับชั้นงานลูกจ้างประจำนี้"); + } + + return new HttpSuccess(getEmpPosLevel); + } + + /** + * API รายการระดับชั้นงานลูกจ้างประจำ + * + * @summary ORG_ - รายการระดับชั้นงานลูกจ้างประจำ (ADMIN) # + * + */ + @Get() + async GetEmpPosLevel() { + const empPosLevel = await this.employeePosLevelRepository.find({ + select: ["id","posLevelName", "posLevelRank",], + }); + + return new HttpSuccess(empPosLevel); + } +} \ No newline at end of file diff --git a/src/controllers/EmployeePosTypeController.ts b/src/controllers/EmployeePosTypeController.ts index 1f70e347..24ef06ed 100644 --- a/src/controllers/EmployeePosTypeController.ts +++ b/src/controllers/EmployeePosTypeController.ts @@ -20,6 +20,7 @@ import HttpError from "../interfaces/http-error"; import { Not } from "typeorm"; import { EmployeePosType, CreateEmployeePosType, UpdateEmployeePosType } from "../entities/EmployeePosType"; import { EmployeePosLevel } from "../entities/EmployeePosLevel"; +import { EmployeePosDict } from "../entities/EmployeePosDict"; @Route("api/v1/org/employee/pos/type") @Tags("EmployeePosType") @@ -30,6 +31,8 @@ import { EmployeePosLevel } from "../entities/EmployeePosLevel"; ) @SuccessResponse(HttpStatusCode.OK, "สำเร็จ") export class EmployeePosTypeController extends Controller { + + private employeePosDictRepository = AppDataSource.getRepository(EmployeePosDict); private employeePosTypeRepository = AppDataSource.getRepository(EmployeePosType); private employeePosLevelRepository = AppDataSource.getRepository(EmployeePosLevel); @@ -118,7 +121,7 @@ export class EmployeePosTypeController extends Controller { if (!delEmpPosType) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประเภทกลุ่มงานลูกจ้างประจำนี้"); } - + //ตารางระดับชั้นงาน const EmpPosLevel = await this.employeePosLevelRepository.find({ where: { employeePosTypeId: id }, }); @@ -128,6 +131,16 @@ export class EmployeePosTypeController extends Controller { "ไม่สามารถลบได้เนื่องจากพบข้อมูลที่ตารางระดับชั้นงาน", ); } + //ตารางตำแหน่งลูกจ้างประจำ + const EmpPosition = await this.employeePosDictRepository.find({ + where: { employeePosTypeId: id }, + }); + if (EmpPosition.length > 0) { + throw new HttpError( + HttpStatusCode.NOT_FOUND, + "ไม่สามารถลบได้เนื่องจากพบข้อมูลที่ตารางตำแหน่งลูกจ้างประจำ", + ); + } await this.employeePosTypeRepository.remove(delEmpPosType); return new HttpSuccess(); diff --git a/src/controllers/OrgChild1Controller.ts b/src/controllers/OrgChild1Controller.ts index bda21a07..68667999 100644 --- a/src/controllers/OrgChild1Controller.ts +++ b/src/controllers/OrgChild1Controller.ts @@ -68,6 +68,7 @@ export class OrgChild1Controller { orgChild1ShortName: orgChild1.orgChild1ShortName, orgChild1Code: orgChild1.orgChild1Code, orgChild1Rank: orgChild1.orgChild1Rank, + orgChild1RankSub: orgChild1.orgChild1RankSub, orgChild1Order: orgChild1.orgChild1Order, orgChild1PhoneEx: orgChild1.orgChild1PhoneEx, orgChild1PhoneIn: orgChild1.orgChild1PhoneIn, @@ -124,7 +125,10 @@ export class OrgChild1Controller { }, }); if (chkCode != null) { - throw new HttpError(HttpStatusCode.INTERNAL_SERVER_ERROR, "รหัสส่วนราชการนี้มีอยู่ในระบบแล้ว"); + throw new HttpError( + HttpStatusCode.INTERNAL_SERVER_ERROR, + "รหัสส่วนราชการนี้มีอยู่ในระบบแล้ว", + ); } const order: any = await this.child1Repository.findOne({ where: { diff --git a/src/controllers/OrgChild2Controller.ts b/src/controllers/OrgChild2Controller.ts index 01355826..ddaf0e99 100644 --- a/src/controllers/OrgChild2Controller.ts +++ b/src/controllers/OrgChild2Controller.ts @@ -70,6 +70,7 @@ export class OrgChild2Controller extends Controller { orgChild2ShortName: orgChild2.orgChild2ShortName, orgChild2Code: orgChild2.orgChild2Code, orgChild2Rank: orgChild2.orgChild2Rank, + orgChild2RankSub: orgChild2.orgChild2RankSub, orgChild2Order: orgChild2.orgChild2Order, orgChild2PhoneEx: orgChild2.orgChild2PhoneEx, orgChild2PhoneIn: orgChild2.orgChild2PhoneIn, diff --git a/src/controllers/OrgChild3Controller.ts b/src/controllers/OrgChild3Controller.ts index cf95a5bb..e7e29903 100644 --- a/src/controllers/OrgChild3Controller.ts +++ b/src/controllers/OrgChild3Controller.ts @@ -66,6 +66,7 @@ export class OrgChild3Controller { orgChild3ShortName: orgChild3.orgChild3ShortName, orgChild3Code: orgChild3.orgChild3Code, orgChild3Rank: orgChild3.orgChild3Rank, + orgChild3RankSub: orgChild3.orgChild3RankSub, orgChild3Order: orgChild3.orgChild3Order, orgChild3PhoneEx: orgChild3.orgChild3PhoneEx, orgChild3PhoneIn: orgChild3.orgChild3PhoneIn, diff --git a/src/controllers/OrgChild4Controller.ts b/src/controllers/OrgChild4Controller.ts index ad21c3be..bc3d1579 100644 --- a/src/controllers/OrgChild4Controller.ts +++ b/src/controllers/OrgChild4Controller.ts @@ -68,6 +68,7 @@ export class OrgChild4Controller extends Controller { orgChild4ShortName: orgChild4.orgChild4ShortName, orgChild4Code: orgChild4.orgChild4Code, orgChild4Rank: orgChild4.orgChild4Rank, + orgChild4RankSub: orgChild4.orgChild4RankSub, orgChild4Order: orgChild4.orgChild4Order, orgChild4PhoneEx: orgChild4.orgChild4PhoneEx, orgChild4PhoneIn: orgChild4.orgChild4PhoneIn, diff --git a/src/controllers/OrgRootController.ts b/src/controllers/OrgRootController.ts index 8b11eec0..b82e2cac 100644 --- a/src/controllers/OrgRootController.ts +++ b/src/controllers/OrgRootController.ts @@ -60,6 +60,7 @@ export class OrgRootController extends Controller { orgRootShortName: orgRoot.orgRootShortName, orgRootCode: orgRoot.orgRootCode, orgRootRank: orgRoot.orgRootRank, + orgRootRankSub: orgRoot.orgRootRankSub, orgRootOrder: orgRoot.orgRootOrder, orgRootPhoneEx: orgRoot.orgRootPhoneEx, orgRootPhoneIn: orgRoot.orgRootPhoneIn, @@ -195,10 +196,7 @@ export class OrgRootController extends Controller { const orgRoot = await this.orgRootRepository.findOne({ where: { id } }); if (!orgRoot) { - throw new HttpError( - HttpStatusCode.NOT_FOUND, - "ไม่พบข้อมูลโครงสร้างระดับ Root นี้", - ); + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงสร้างระดับ Root นี้"); } orgRoot.lastUpdateUserId = request.user.sub; orgRoot.lastUpdateFullName = request.user.name; @@ -220,10 +218,7 @@ export class OrgRootController extends Controller { async delete(@Path() id: string) { const orgRoot = await this.orgRootRepository.findOne({ where: { id } }); if (!orgRoot) { - throw new HttpError( - HttpStatusCode.NOT_FOUND, - "ไม่พบข้อมูลโครงสร้างระดับ Root นี้" - ); + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงสร้างระดับ Root นี้"); } // const orgChild1 = await this.orgChild1Repository.findOne({ where: { orgRootId: id } }); diff --git a/src/controllers/OrganizationController.ts b/src/controllers/OrganizationController.ts index 01591b8b..28ff8630 100644 --- a/src/controllers/OrganizationController.ts +++ b/src/controllers/OrganizationController.ts @@ -605,6 +605,7 @@ export class OrganizationController extends Controller { "orgRoot.orgRootFax", "orgRoot.orgRevisionId", "orgRoot.orgRootRank", + "orgRoot.orgRootRankSub", ]) .orderBy("orgRoot.orgRootOrder", "ASC") .getMany(); @@ -626,6 +627,7 @@ export class OrganizationController extends Controller { "orgChild1.orgChild1Fax", "orgChild1.orgRootId", "orgChild1.orgChild1Rank", + "orgChild1.orgChild1RankSub", ]) .orderBy("orgChild1.orgChild1Order", "ASC") .getMany() @@ -648,6 +650,7 @@ export class OrganizationController extends Controller { "orgChild2.orgChild2Fax", "orgChild2.orgRootId", "orgChild2.orgChild2Rank", + "orgChild2.orgChild2RankSub", "orgChild2.orgChild1Id", ]) .orderBy("orgChild2.orgChild2Order", "ASC") @@ -671,6 +674,7 @@ export class OrganizationController extends Controller { "orgChild3.orgChild3Fax", "orgChild3.orgRootId", "orgChild3.orgChild3Rank", + "orgChild3.orgChild3RankSub", "orgChild3.orgChild2Id", ]) .orderBy("orgChild3.orgChild3Order", "ASC") @@ -694,6 +698,7 @@ export class OrganizationController extends Controller { "orgChild4.orgChild4Fax", "orgChild4.orgRootId", "orgChild4.orgChild4Rank", + "orgChild4.orgChild4RankSub", "orgChild4.orgChild3Id", ]) .orderBy("orgChild4.orgChild4Order", "ASC") @@ -712,13 +717,15 @@ export class OrganizationController extends Controller { orgTreeCode: orgRoot.orgRootCode, orgCode: orgRoot.orgRootCode + "00", orgTreeRank: orgRoot.orgRootRank, + orgTreeRankSub: orgRoot.orgRootRankSub, orgTreeOrder: orgRoot.orgRootOrder, orgTreePhoneEx: orgRoot.orgRootPhoneEx, orgTreePhoneIn: orgRoot.orgRootPhoneIn, orgTreeFax: orgRoot.orgRootFax, orgRevisionId: orgRoot.orgRevisionId, orgRootName: orgRoot.orgRootName, - labelName: orgRoot.orgRootName + " " + orgRoot.orgRootCode + "00" +" "+ orgRoot.orgRootShortName, + labelName: + orgRoot.orgRootName + " " + orgRoot.orgRootCode + "00" + " " + orgRoot.orgRootShortName, totalPosition: await this.posMasterRepository.count({ where: { orgRevisionId: orgRoot.orgRevisionId, orgRootId: orgRoot.id }, }), @@ -818,6 +825,7 @@ export class OrganizationController extends Controller { orgTreeCode: orgChild1.orgChild1Code, orgCode: orgRoot.orgRootCode + orgChild1.orgChild1Code, orgTreeRank: orgChild1.orgChild1Rank, + orgTreeRankSub: orgChild1.orgChild1RankSub, orgTreeOrder: orgChild1.orgChild1Order, orgRootCode: orgRoot.orgRootCode, orgTreePhoneEx: orgChild1.orgChild1PhoneEx, @@ -825,7 +833,13 @@ export class OrganizationController extends Controller { orgTreeFax: orgChild1.orgChild1Fax, orgRevisionId: orgRoot.orgRevisionId, orgRootName: orgRoot.orgRootName, - labelName: orgChild1.orgChild1Name + " " + orgRoot.orgRootCode +orgChild1.orgChild1Code +" "+ orgChild1.orgChild1ShortName, + labelName: + orgChild1.orgChild1Name + + " " + + orgRoot.orgRootCode + + orgChild1.orgChild1Code + + " " + + orgChild1.orgChild1ShortName, totalPosition: await this.posMasterRepository.count({ where: { orgRevisionId: orgRoot.orgRevisionId, orgChild1Id: orgChild1.id }, }), @@ -925,6 +939,7 @@ export class OrganizationController extends Controller { orgTreeCode: orgChild2.orgChild2Code, orgCode: orgRoot.orgRootCode + orgChild2.orgChild2Code, orgTreeRank: orgChild2.orgChild2Rank, + orgTreeRankSub: orgChild2.orgChild2RankSub, orgTreeOrder: orgChild2.orgChild2Order, orgRootCode: orgRoot.orgRootCode, orgTreePhoneEx: orgChild2.orgChild2PhoneEx, @@ -932,7 +947,13 @@ export class OrganizationController extends Controller { orgTreeFax: orgChild2.orgChild2Fax, orgRevisionId: orgRoot.orgRevisionId, orgRootName: orgRoot.orgRootName, - labelName: orgChild2.orgChild2Name + " " + orgRoot.orgRootCode +orgChild2.orgChild2Code +" "+ orgChild2.orgChild2ShortName, + labelName: + orgChild2.orgChild2Name + + " " + + orgRoot.orgRootCode + + orgChild2.orgChild2Code + + " " + + orgChild2.orgChild2ShortName, totalPosition: await this.posMasterRepository.count({ where: { orgRevisionId: orgRoot.orgRevisionId, @@ -1035,6 +1056,7 @@ export class OrganizationController extends Controller { orgTreeCode: orgChild3.orgChild3Code, orgCode: orgRoot.orgRootCode + orgChild3.orgChild3Code, orgTreeRank: orgChild3.orgChild3Rank, + orgTreeRankSub: orgChild3.orgChild3RankSub, orgTreeOrder: orgChild3.orgChild3Order, orgRootCode: orgRoot.orgRootCode, orgTreePhoneEx: orgChild3.orgChild3PhoneEx, @@ -1042,7 +1064,13 @@ export class OrganizationController extends Controller { orgTreeFax: orgChild3.orgChild3Fax, orgRevisionId: orgRoot.orgRevisionId, orgRootName: orgRoot.orgRootName, - labelName: orgChild3.orgChild3Name + " " + orgRoot.orgRootCode +orgChild3.orgChild3Code +" "+ orgChild3.orgChild3ShortName, + labelName: + orgChild3.orgChild3Name + + " " + + orgRoot.orgRootCode + + orgChild3.orgChild3Code + + " " + + orgChild3.orgChild3ShortName, totalPosition: await this.posMasterRepository.count({ where: { orgRevisionId: orgRoot.orgRevisionId, @@ -1145,6 +1173,7 @@ export class OrganizationController extends Controller { orgTreeCode: orgChild4.orgChild4Code, orgCode: orgRoot.orgRootCode + orgChild4.orgChild4Code, orgTreeRank: orgChild4.orgChild4Rank, + orgTreeRankSub: orgChild4.orgChild4RankSub, orgTreeOrder: orgChild4.orgChild4Order, orgRootCode: orgRoot.orgRootCode, orgTreePhoneEx: orgChild4.orgChild4PhoneEx, @@ -1152,7 +1181,13 @@ export class OrganizationController extends Controller { orgTreeFax: orgChild4.orgChild4Fax, orgRevisionId: orgRoot.orgRevisionId, orgRootName: orgRoot.orgRootName, - labelName: orgChild4.orgChild4Name + " " + orgRoot.orgRootCode +orgChild4.orgChild4Code +" "+ orgChild4.orgChild4ShortName, + labelName: + orgChild4.orgChild4Name + + " " + + orgRoot.orgRootCode + + orgChild4.orgChild4Code + + " " + + orgChild4.orgChild4ShortName, totalPosition: await this.posMasterRepository.count({ where: { orgRevisionId: orgRoot.orgRevisionId, diff --git a/src/entities/EmployeePosLevel.ts b/src/entities/EmployeePosLevel.ts index c2843706..70f71fd8 100644 --- a/src/entities/EmployeePosLevel.ts +++ b/src/entities/EmployeePosLevel.ts @@ -39,6 +39,9 @@ export class CreateEmployeePosLevel { @Column() posLevelRank: number; + @Column("uuid") + employeePosTypeId: string; + } export type UpdateEmployeePosLevel= Partial; \ No newline at end of file diff --git a/src/entities/OrgChild1.ts b/src/entities/OrgChild1.ts index a91c8344..d02a6b8c 100644 --- a/src/entities/OrgChild1.ts +++ b/src/entities/OrgChild1.ts @@ -49,6 +49,13 @@ export class OrgChild1 extends EntityBase { }) orgChild1Rank: OrgChild1Rank; + @Column({ + nullable: true, + comment: "ระดับส่วนราชการsub", + default: null, + }) + orgChild1RankSub: string; + @Column({ nullable: true, comment: "ลำดับที่ของส่วนราชการภายใน Child เดียวกัน", @@ -95,7 +102,8 @@ export class OrgChild1 extends EntityBase { @Column({ nullable: true, length: 40, - comment: "รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้าง โครงสร้างใหม่ที่ทำสำเนากับโครงสร้างเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขโครงสร้างย้อนหลังได้", + comment: + "รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้าง โครงสร้างใหม่ที่ทำสำเนากับโครงสร้างเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขโครงสร้างย้อนหลังได้", default: null, }) ancestorDNA: string; @@ -134,6 +142,9 @@ export class CreateOrgChild1 { @Column() orgChild1Rank: string; + @Column() + orgChild1RankSub?: string; + @Column() orgChild1PhoneEx?: string; diff --git a/src/entities/OrgChild2.ts b/src/entities/OrgChild2.ts index 55315a9a..f8cf0c2a 100644 --- a/src/entities/OrgChild2.ts +++ b/src/entities/OrgChild2.ts @@ -48,6 +48,13 @@ export class OrgChild2 extends EntityBase { }) orgChild2Rank: OrgChild2Rank; + @Column({ + nullable: true, + comment: "ระดับส่วนราชการsub", + default: null, + }) + orgChild2RankSub: string; + @Column({ nullable: true, comment: "ลำดับที่ของส่วนราชการภายใน Child เดียวกัน", @@ -100,7 +107,8 @@ export class OrgChild2 extends EntityBase { @Column({ nullable: true, length: 40, - comment: "รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้าง โครงสร้างใหม่ที่ทำสำเนากับโครงสร้างเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขโครงสร้างย้อนหลังได้", + comment: + "รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้าง โครงสร้างใหม่ที่ทำสำเนากับโครงสร้างเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขโครงสร้างย้อนหลังได้", default: null, }) ancestorDNA: string; @@ -140,6 +148,9 @@ export class CreateOrgChild2 { @Column() orgChild2Rank: string; + @Column() + orgChild2RankSub?: string; + @Column() orgChild2PhoneEx?: string; diff --git a/src/entities/OrgChild3.ts b/src/entities/OrgChild3.ts index fbfad816..0df3476b 100644 --- a/src/entities/OrgChild3.ts +++ b/src/entities/OrgChild3.ts @@ -49,6 +49,13 @@ export class OrgChild3 extends EntityBase { }) orgChild3Rank: OrgChild3Rank; + @Column({ + nullable: true, + comment: "ระดับส่วนราชการsub", + default: null, + }) + orgChild3RankSub: string; + @Column({ nullable: true, comment: "ลำดับที่ของส่วนราชการภายใน Child เดียวกัน", @@ -107,7 +114,8 @@ export class OrgChild3 extends EntityBase { @Column({ nullable: true, length: 40, - comment: "รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้าง โครงสร้างใหม่ที่ทำสำเนากับโครงสร้างเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขโครงสร้างย้อนหลังได้", + comment: + "รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้าง โครงสร้างใหม่ที่ทำสำเนากับโครงสร้างเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขโครงสร้างย้อนหลังได้", default: null, }) ancestorDNA: string; @@ -148,6 +156,9 @@ export class CreateOrgChild3 { @Column() orgChild3Rank: string; + @Column() + orgChild3RankSub?: string; + @Column() orgChild3PhoneEx?: string; diff --git a/src/entities/OrgChild4.ts b/src/entities/OrgChild4.ts index a5260567..769f39d2 100644 --- a/src/entities/OrgChild4.ts +++ b/src/entities/OrgChild4.ts @@ -48,6 +48,13 @@ export class OrgChild4 extends EntityBase { }) orgChild4Rank: OrgChild4Rank; + @Column({ + nullable: true, + comment: "ระดับส่วนราชการsub", + default: null, + }) + orgChild4RankSub: string; + @Column({ nullable: true, comment: "ลำดับที่ของส่วนราชการภายใน Child เดียวกัน", @@ -112,7 +119,8 @@ export class OrgChild4 extends EntityBase { @Column({ nullable: true, length: 40, - comment: "รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้าง โครงสร้างใหม่ที่ทำสำเนากับโครงสร้างเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขโครงสร้างย้อนหลังได้", + comment: + "รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้าง โครงสร้างใหม่ที่ทำสำเนากับโครงสร้างเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขโครงสร้างย้อนหลังได้", default: null, }) ancestorDNA: string; @@ -154,6 +162,9 @@ export class CreateOrgChild4 { @Column() orgChild4Rank: string; + @Column() + orgChild4RankSub?: string; + @Column() orgChild4PhoneEx?: string; diff --git a/src/entities/OrgRoot.ts b/src/entities/OrgRoot.ts index 16f52cee..a6eaa7f9 100644 --- a/src/entities/OrgRoot.ts +++ b/src/entities/OrgRoot.ts @@ -49,6 +49,13 @@ export class OrgRoot extends EntityBase { }) orgRootRank: OrgRootRank; + @Column({ + nullable: true, + comment: "ระดับส่วนราชการsub", + default: null, + }) + orgRootRankSub: string; + @Column({ nullable: true, comment: "ลำดับที่ของหน่วยงาน", @@ -83,7 +90,8 @@ export class OrgRoot extends EntityBase { @Column({ nullable: true, length: 40, - comment: "รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้าง โครงสร้างใหม่ที่ทำสำเนากับโครงสร้างเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขโครงสร้างย้อนหลังได้", + comment: + "รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้าง โครงสร้างใหม่ที่ทำสำเนากับโครงสร้างเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขโครงสร้างย้อนหลังได้", default: null, }) ancestorDNA: string; @@ -127,6 +135,9 @@ export class CreateOrgRoot { @Column() orgRootRank: OrgRootRank; + // @Column() + // orgRootRankSub?: string; + @Column() orgRootPhoneEx?: string; diff --git a/src/migration/1710298184697-update_table_child_ranksub.ts b/src/migration/1710298184697-update_table_child_ranksub.ts new file mode 100644 index 00000000..efbde982 --- /dev/null +++ b/src/migration/1710298184697-update_table_child_ranksub.ts @@ -0,0 +1,38 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class UpdateTableChildRanksub1710298184697 implements MigrationInterface { + name = 'UpdateTableChildRanksub1710298184697' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`CREATE TABLE \`profileLeaveHistory\` (\`id\` varchar(36) NOT NULL, \`createdAt\` datetime(6) NOT NULL COMMENT 'สร้างข้อมูลเมื่อ' DEFAULT CURRENT_TIMESTAMP(6), \`createdUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่สร้างข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`lastUpdatedAt\` datetime(6) NOT NULL COMMENT 'แก้ไขข้อมูลล่าสุดเมื่อ' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`lastUpdateUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่แก้ไขข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`createdFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่สร้างข้อมูล' DEFAULT 'string', \`lastUpdateFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่แก้ไขข้อมูลล่าสุด' DEFAULT 'string', \`isActive\` tinyint NOT NULL COMMENT 'สถานะการใช้งาน' DEFAULT 0, \`dateStartLeave\` datetime NULL COMMENT 'วัน เดือน ปี ที่เริ่มลา', \`dateEndLeave\` datetime NULL COMMENT 'วัน เดือน ปี ที่สิ้นสุดลา', \`numLeave\` double NULL COMMENT 'ลาครั้งที่', \`sumLeave\` double NULL COMMENT 'ลามาแล้ว', \`totalLeave\` double NULL COMMENT 'รวมเป็น', \`status\` text NULL COMMENT 'สถานะ', \`typeLeaveId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง TypeLeave', \`reason\` text NULL COMMENT 'เหตุผล', \`profileLeaveId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง ProfileLeave', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`CREATE TABLE \`profileLeave\` (\`id\` varchar(36) NOT NULL, \`createdAt\` datetime(6) NOT NULL COMMENT 'สร้างข้อมูลเมื่อ' DEFAULT CURRENT_TIMESTAMP(6), \`createdUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่สร้างข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`lastUpdatedAt\` datetime(6) NOT NULL COMMENT 'แก้ไขข้อมูลล่าสุดเมื่อ' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`lastUpdateUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่แก้ไขข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`createdFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่สร้างข้อมูล' DEFAULT 'string', \`lastUpdateFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่แก้ไขข้อมูลล่าสุด' DEFAULT 'string', \`profileId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง Profile', \`isActive\` tinyint NOT NULL COMMENT 'สถานะการใช้งาน' DEFAULT 0, \`restCount\` double NULL, \`restDay\` double NULL, \`sickCount\` double NULL COMMENT 'ลาพักผ่อน (วัน)', \`sickDay\` double NULL COMMENT 'ลาป่วย (วัน)', \`otherDay\` double NULL, \`personalCount\` double NULL, \`personalDay\` double NULL COMMENT 'ลากิจส่วนตัว (วัน)', \`studyCount\` double NULL, \`absentCount\` double NULL, \`absentDay\` double NULL COMMENT 'ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล (วัน)', \`agencyCount\` double NULL, \`agencyDay\` double NULL COMMENT 'ลาไปปฏิบัติงานในองค์การระหว่างประเทศ (วัน)', \`coupleCount\` double NULL, \`coupleDay\` double NULL COMMENT 'ลาติดตามคู่สมรส (วัน)', \`lateCount\` double NULL, \`lateDay\` double NULL, \`maternityCount\` double NULL, \`maternityDay\` double NULL COMMENT 'ลาคลอดบุตร (วัน)', \`militaryCount\` double NULL, \`militaryDay\` double NULL, \`ordainCount\` double NULL, \`ordainDay\` double NULL COMMENT 'ลาอุปสมบทหรือการลาประกอบพิธีฮัจย์ฯ (วัน)', \`otherCount\` double NULL, \`dateStartLeave\` datetime NULL COMMENT 'วัน เดือน ปี ที่เริ่มลา', \`dateEndLeave\` datetime NULL COMMENT 'วัน เดือน ปี ที่สิ้นสุดลา', \`numLeave\` double NULL COMMENT 'ลาครั้งที่', \`sumLeave\` double NULL COMMENT 'ลามาแล้ว', \`totalLeave\` double NULL COMMENT 'รวมเป็น', \`status\` text NULL COMMENT 'สถานะ', \`typeLeaveId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง TypeLeave', \`reason\` text NULL COMMENT 'เหตุผล', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`CREATE TABLE \`profileAbilityHistory\` (\`id\` varchar(36) NOT NULL, \`createdAt\` datetime(6) NOT NULL COMMENT 'สร้างข้อมูลเมื่อ' DEFAULT CURRENT_TIMESTAMP(6), \`createdUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่สร้างข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`lastUpdatedAt\` datetime(6) NOT NULL COMMENT 'แก้ไขข้อมูลล่าสุดเมื่อ' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`lastUpdateUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่แก้ไขข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`createdFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่สร้างข้อมูล' DEFAULT 'string', \`lastUpdateFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่แก้ไขข้อมูลล่าสุด' DEFAULT 'string', \`isActive\` tinyint NOT NULL COMMENT 'สถานะการใช้งาน' DEFAULT 0, \`remark\` text NULL COMMENT 'หมายเหตุ', \`detail\` text NULL COMMENT 'รายละเอียด', \`reference\` text NULL COMMENT 'เอกสารอ้างอิง', \`dateStart\` datetime NULL COMMENT 'วันที่เริ่มต้น', \`dateEnd\` datetime NULL COMMENT 'วันที่สิ้นสุด', \`field\` text NULL COMMENT 'ด้าน', \`profileAbilityId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง ProfileAbility', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`CREATE TABLE \`profileAbility\` (\`id\` varchar(36) NOT NULL, \`createdAt\` datetime(6) NOT NULL COMMENT 'สร้างข้อมูลเมื่อ' DEFAULT CURRENT_TIMESTAMP(6), \`createdUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่สร้างข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`lastUpdatedAt\` datetime(6) NOT NULL COMMENT 'แก้ไขข้อมูลล่าสุดเมื่อ' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`lastUpdateUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่แก้ไขข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`createdFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่สร้างข้อมูล' DEFAULT 'string', \`lastUpdateFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่แก้ไขข้อมูลล่าสุด' DEFAULT 'string', \`profileId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง Profile', \`isActive\` tinyint NOT NULL COMMENT 'สถานะการใช้งาน' DEFAULT 0, \`remark\` text NULL COMMENT 'หมายเหตุ', \`detail\` text NULL COMMENT 'รายละเอียด', \`reference\` text NULL COMMENT 'เอกสารอ้างอิง', \`dateStart\` datetime NULL COMMENT 'วันที่เริ่มต้น', \`dateEnd\` datetime NULL COMMENT 'วันที่สิ้นสุด', \`field\` text NULL COMMENT 'ด้าน', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`ALTER TABLE \`orgChild4\` ADD \`orgChild4RankSub\` varchar(255) NULL COMMENT 'ระดับส่วนราชการsub'`); + await queryRunner.query(`ALTER TABLE \`orgChild3\` ADD \`orgChild3RankSub\` varchar(255) NULL COMMENT 'ระดับส่วนราชการsub'`); + await queryRunner.query(`ALTER TABLE \`orgChild2\` ADD \`orgChild2RankSub\` varchar(255) NULL COMMENT 'ระดับส่วนราชการsub'`); + await queryRunner.query(`ALTER TABLE \`orgChild1\` ADD \`orgChild1RankSub\` varchar(255) NULL COMMENT 'ระดับส่วนราชการsub'`); + await queryRunner.query(`ALTER TABLE \`orgRoot\` ADD \`orgRootRankSub\` varchar(255) NULL COMMENT 'ระดับส่วนราชการsub'`); + await queryRunner.query(`ALTER TABLE \`profileLeaveHistory\` ADD CONSTRAINT \`FK_0fc535910e41657c584a569b8a6\` FOREIGN KEY (\`profileLeaveId\`) REFERENCES \`profileLeave\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); + await queryRunner.query(`ALTER TABLE \`profileLeave\` ADD CONSTRAINT \`FK_ddae7e2a7ac1ac97be4a8b6bcc8\` FOREIGN KEY (\`profileId\`) REFERENCES \`profile\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); + await queryRunner.query(`ALTER TABLE \`profileAbilityHistory\` ADD CONSTRAINT \`FK_1af20fbd56b675ee6777227967d\` FOREIGN KEY (\`profileAbilityId\`) REFERENCES \`profileAbility\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); + await queryRunner.query(`ALTER TABLE \`profileAbility\` ADD CONSTRAINT \`FK_c15373efe7ca78db8b7aab26afb\` FOREIGN KEY (\`profileId\`) REFERENCES \`profile\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`profileAbility\` DROP FOREIGN KEY \`FK_c15373efe7ca78db8b7aab26afb\``); + await queryRunner.query(`ALTER TABLE \`profileAbilityHistory\` DROP FOREIGN KEY \`FK_1af20fbd56b675ee6777227967d\``); + await queryRunner.query(`ALTER TABLE \`profileLeave\` DROP FOREIGN KEY \`FK_ddae7e2a7ac1ac97be4a8b6bcc8\``); + await queryRunner.query(`ALTER TABLE \`profileLeaveHistory\` DROP FOREIGN KEY \`FK_0fc535910e41657c584a569b8a6\``); + await queryRunner.query(`ALTER TABLE \`orgRoot\` DROP COLUMN \`orgRootRankSub\``); + await queryRunner.query(`ALTER TABLE \`orgChild1\` DROP COLUMN \`orgChild1RankSub\``); + await queryRunner.query(`ALTER TABLE \`orgChild2\` DROP COLUMN \`orgChild2RankSub\``); + await queryRunner.query(`ALTER TABLE \`orgChild3\` DROP COLUMN \`orgChild3RankSub\``); + await queryRunner.query(`ALTER TABLE \`orgChild4\` DROP COLUMN \`orgChild4RankSub\``); + await queryRunner.query(`DROP TABLE \`profileAbility\``); + await queryRunner.query(`DROP TABLE \`profileAbilityHistory\``); + await queryRunner.query(`DROP TABLE \`profileLeave\``); + await queryRunner.query(`DROP TABLE \`profileLeaveHistory\``); + } + +}