From dd5662c14ae016fb74d4a69627aad1285a3b0649 Mon Sep 17 00:00:00 2001 From: Bright Date: Tue, 11 Jun 2024 16:14:36 +0700 Subject: [PATCH] =?UTF-8?q?entity=20=E0=B8=A2=E0=B9=89=E0=B8=B2=E0=B8=A2?= =?UTF-8?q?=E0=B8=AA=E0=B8=B1=E0=B8=9A=E0=B9=80=E0=B8=9B=E0=B8=A5=E0=B8=B5?= =?UTF-8?q?=E0=B9=88=E0=B8=A2=E0=B8=99=E0=B8=95=E0=B8=B3=E0=B9=81=E0=B8=AB?= =?UTF-8?q?=E0=B8=99=E0=B9=88=E0=B8=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/ChangePositionController.ts | 50 +++++ src/controllers/ProfileEmployeeController.ts | 6 +- src/entities/ChangePosition.ts | 37 ++++ src/entities/ProfileChangePosition.ts | 200 +++++++++++++++++++ 4 files changed, 292 insertions(+), 1 deletion(-) create mode 100644 src/controllers/ChangePositionController.ts create mode 100644 src/entities/ChangePosition.ts create mode 100644 src/entities/ProfileChangePosition.ts diff --git a/src/controllers/ChangePositionController.ts b/src/controllers/ChangePositionController.ts new file mode 100644 index 00000000..09f231d8 --- /dev/null +++ b/src/controllers/ChangePositionController.ts @@ -0,0 +1,50 @@ +import { + Controller, + Get, + Post, + Put, + Delete, + Patch, + Route, + Security, + Tags, + Body, + Path, + Request, + Example, + SuccessResponse, + Response, + Query, +} from "tsoa"; +import { AppDataSource } from "../database/data-source"; +import HttpSuccess from "../interfaces/http-success"; +import HttpStatusCode from "../interfaces/http-status"; +import { Equal, ILike, In, IsNull, Like, Not, Brackets, MoreThan } from "typeorm"; +import { ChangePosition } from "../entities/ChangePosition"; + +@Route("api/v1/placement/change-position") +@Tags("Switch") +@Security("bearerAuth") +@Response( + HttpStatusCode.INTERNAL_SERVER_ERROR, + "เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง", +) +@SuccessResponse(HttpStatusCode.OK, "สำเร็จ") +export class ChangePositionController extends Controller { + private ChangePositionRepository = AppDataSource.getRepository(ChangePosition); + + /** + * API รายการออกคำสั่งย้ายสับเปลี่ยนตำแหน่ง + * + * @summary API รายการออกคำสั่งย้ายสับเปลี่ยนตำแหน่ง + * + */ + @Get("") + async GetChangePositionLists() { + + const data = await this.ChangePositionRepository.find(); + return new HttpSuccess(data); + + } + +} diff --git a/src/controllers/ProfileEmployeeController.ts b/src/controllers/ProfileEmployeeController.ts index ec09edf0..e6f70abb 100644 --- a/src/controllers/ProfileEmployeeController.ts +++ b/src/controllers/ProfileEmployeeController.ts @@ -556,7 +556,11 @@ export class ProfileEmployeeController extends Controller { const exists = !!body.citizenId && (await this.profileRepo.findOne({ - where: { id: Not(id), citizenId: body.citizenId }, + where: { + id: Not(id), + citizenId: body.citizenId, + employeeClass: String(body.employeeClass) + }, })); if (exists) { diff --git a/src/entities/ChangePosition.ts b/src/entities/ChangePosition.ts new file mode 100644 index 00000000..428ba1c5 --- /dev/null +++ b/src/entities/ChangePosition.ts @@ -0,0 +1,37 @@ +import { Entity, Column, ManyToOne, JoinColumn, OneToMany } from "typeorm"; +import { EntityBase } from "./base/Base"; +import { ProfileChangePosition } from "./ProfileChangePosition"; + +@Entity("changePosition") +export class ChangePosition extends EntityBase { + @Column({ + nullable: true, + comment: "ชื่อรอบการย้ายสับเปลี่ยนตำแหน่ง", + type: "text", + default: null, + }) + name: string; + + @Column({ + nullable: true, + type: "datetime", + comment: "วันที่ดำเนินการ", + default: null, + }) + date: Date; + + @OneToMany(() => ProfileChangePosition, (x) => x.profile) + profileChangePosition: ProfileChangePosition[]; +} + +export class CreateChangePosition { + name: string; + date?: Date; + status?: string; +} + +export type UpdateChangePosition = { + name: string; + date?: Date; + status?: string; +}; diff --git a/src/entities/ProfileChangePosition.ts b/src/entities/ProfileChangePosition.ts new file mode 100644 index 00000000..0baa3bf8 --- /dev/null +++ b/src/entities/ProfileChangePosition.ts @@ -0,0 +1,200 @@ +import { Entity, Column, ManyToOne, JoinColumn } from "typeorm"; +import { EntityBase } from "./base/Base"; +import { ChangePosition } from "./ChangePosition"; + +@Entity("profileChangePosition") +export class ProfileChangePosition extends EntityBase { + @Column({ nullable: true, comment: "เหตุผลที่รับโอนราชการ", type: "text", default: null }) + reason: string; + + @Column({ nullable: true, comment: "วุฒิ/สาขาเดิม", default: null }) + educationOld: string; + + @Column({ nullable: true, comment: "สังกัดเดิม", default: null }) + organizationPositionOld: string; + + @Column({ nullable: true, comment: "สังกัดเดิม", default: null }) + organizationOld: string; + + @Column({ nullable: true, comment: "ตำแหน่งเดิม", default: null }) + positionOld: string; + + @Column({ nullable: true, comment: "ข้อมูลหน่วยงานเดิม ตำแหน่งประเภท", default: null }) + positionTypeOld: string; + + @Column({ nullable: true, comment: "ข้อมูลหน่วยงานเดิม ระดับ", default: null }) + positionLevelOld: string; + + @Column({ nullable: true, comment: "ข้อมูลหน่วยงานเดิม เลขที่", default: null }) + positionNumberOld: string; + + @Column({ nullable: true, comment: "ข้อมูลหน่วยงานเดิม เงินเดือน", type: "double", default: null }) + amountOld: number; + + + + @Column({ nullable: true, comment: "profile Id", default: null }) + profileId: string; + + @Column({ nullable: true, comment: "คำนำหน้า", default: null }) + prefix: string; + + @Column({ nullable: true, comment: "ชื่อ", default: null }) + firstName: string; + + @Column({ nullable: true, comment: "นามสกุล", default: null }) + lastName: string; + + @Column({ nullable: true, comment: "เลขบัตรประชาชน", default: null }) + citizenId: string; + + @Column({ nullable: true, comment: "ชื่อหน่วยงาน root", default: null }) + root: string; + + @Column({ nullable: true, comment: "id หน่วยงาน root", default: null }) + rootId: string; + + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน root", default: null }) + rootShortName: string; + + @Column({ nullable: true, comment: "ชื่อหน่วยงาน child1", default: null }) + child1: string; + + @Column({ nullable: true, comment: "id หน่วยงาน child1", default: null }) + child1Id: string; + + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน child1", default: null }) + child1ShortName: string; + + @Column({ nullable: true, comment: "ชื่อหน่วยงาน child2", default: null }) + child2: string; + + @Column({ nullable: true, comment: "id หน่วยงาน child2", default: null }) + child2Id: string; + + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน child2", default: null }) + child2ShortName: string; + + @Column({ nullable: true, comment: "ชื่อหน่วยงาน child3", default: null }) + child3: string; + + @Column({ nullable: true, comment: "id หน่วยงาน child3", default: null }) + child3Id: string; + + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน child3", default: null }) + child3ShortName: string; + + @Column({ nullable: true, comment: "ชื่อหน่วยงาน child4", default: null }) + child4: string; + + @Column({ nullable: true, comment: "id หน่วยงาน child4", default: null }) + child4Id: string; + + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน child4", default: null }) + child4ShortName: string; + + @Column({ nullable: true, comment: "ระดับโครงสร้าง", type: "int", default: null }) + node: number; + + @Column({ nullable: true, comment: "id โครงสร้าง", type: "uuid", default: null }) + nodeId: string; + + @Column({ nullable: true, comment: "id อัตรากำลัง", default: null }) + posmasterId: string; + + @Column({ nullable: true, comment: "id revision", default: null }) + orgRevisionId: string; + + @Column({ nullable: true, comment: "id ตำแหน่ง", default: null }) + positionId: string; + + @Column({ nullable: true, comment: "สายงาน", default: null }) + positionField: string; + + @Column({ nullable: true, comment: "เลขที่ตำแหน่ง", type: "int", default: null }) + posMasterNo: number; + + @Column({ nullable: true, comment: "ชื่อตำแหน่งในสายงาน", default: null }) + position: string; + + @Column({ nullable: true, comment: "id ประเภทตำแหน่ง", default: null }) + posTypeId: string; + + @Column({ nullable: true, comment: "ชื่อประเภทตำแหน่ง", default: null }) + posTypeName: string; + + @Column({ nullable: true, comment: "id ระดับตำแหน่ง", default: null }) + posLevelId: string; + + @Column({ nullable: true, comment: "ชื่อระดับตำแหน่ง", default: null }) + posLevelName: string; + + + + @Column({ nullable: true, comment: "ชื่อหน่วยงาน root old", default: null }) + rootOld: string; + + @Column({ nullable: true, comment: "id หน่วยงาน root old", default: null }) + rootOldId: string; + + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน root old", default: null }) + rootShortNameOld: string; + + @Column({ nullable: true, comment: "ชื่อหน่วยงาน child1 old", default: null }) + child1Old: string; + + @Column({ nullable: true, comment: "id หน่วยงาน child1 old", default: null }) + child1OldId: string; + + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน child1 old", default: null }) + child1ShortNameOld: string; + + @Column({ nullable: true, comment: "ชื่อหน่วยงาน child2 old", default: null }) + child2Old: string; + + @Column({ nullable: true, comment: "id หน่วยงาน child2 old", default: null }) + child2OldId: string; + + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน child2 old", default: null }) + child2ShortNameOld: string; + + @Column({ nullable: true, comment: "ชื่อหน่วยงาน child3 old", default: null }) + child3Old: string; + + @Column({ nullable: true, comment: "id หน่วยงาน child3 old", default: null }) + child3OldId: string; + + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน child3 old", default: null }) + child3ShortNameOld: string; + + @Column({ nullable: true, comment: "ชื่อหน่วยงาน child4 old", default: null }) + child4Old: string; + + @Column({ nullable: true, comment: "id หน่วยงาน child4 old", default: null }) + child4OldId: string; + + @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน child4 old", default: null }) + child4ShortNameOld: string; + + @Column({ nullable: true, comment: "เลขที่ตำแหน่ง old", type: "int", default: null }) + posMasterNoOld: number; + + @Column({ nullable: true, comment: "id ประเภทตำแหน่ง old", default: null }) + posTypeOldId: string; + + @Column({ nullable: true, comment: "ชื่อประเภทตำแหน่ง old", default: null }) + posTypeNameOld: string; + + @Column({ nullable: true, comment: "id ระดับตำแหน่ง old", default: null }) + posLevelOldId: string; + + @Column({ nullable: true, comment: "ชื่อระดับตำแหน่ง old", default: null }) + posLevelNameOld: string; + + @Column({nullable: true, length: 40, comment: "คีย์นอก(FK)ของตาราง ChangePosition", default: null }) + changePositionId: string; + + @ManyToOne(() => ChangePosition, (v) => v.profileChangePosition) + @JoinColumn({ name: "changePositionId" }) + profile: ChangePosition; +}