From afa7c95a0180c2cafe0caf87c22829e9c3da5951 Mon Sep 17 00:00:00 2001 From: Kittapath Date: Tue, 11 Jun 2024 16:13:51 +0700 Subject: [PATCH 1/2] no message --- src/controllers/ProfileAvatarController.ts | 12 +++++++++ src/controllers/ProfileController.ts | 30 +++++++++++++++------- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/controllers/ProfileAvatarController.ts b/src/controllers/ProfileAvatarController.ts index a97cb6a1..c79e1821 100644 --- a/src/controllers/ProfileAvatarController.ts +++ b/src/controllers/ProfileAvatarController.ts @@ -22,6 +22,18 @@ export class ProfileAvatarController extends Controller { return new HttpSuccess(lists); } + @Get("profileId/{id}") + async getProfile(@Path() id: string) { + const profile = await this.profileRepository.findOne({ + select: ["avatar", "avatarName"], + where: { id }, + }); + + if (!profile) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล"); + + return new HttpSuccess(profile); + } + @Get("select/{profileId}/{id}") public async selectAvatar(@Path() profileId: string, @Path() id: string) { const result = await this.avatarRepository.findOneBy({ id: id }); diff --git a/src/controllers/ProfileController.ts b/src/controllers/ProfileController.ts index f3168c46..7862f8f0 100644 --- a/src/controllers/ProfileController.ts +++ b/src/controllers/ProfileController.ts @@ -496,15 +496,27 @@ export class ProfileController extends Controller { if (!profile) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล"); - const _caregiver = await this.profileRepo.find({ - relations: { posLevel: true, posType: true }, - }); - const _commander = await this.profileRepo.find({ - relations: { posLevel: true, posType: true }, - }); - const _chairman = await this.profileRepo.find({ - relations: { posLevel: true, posType: true }, - }); + const _caregiver = await this.profileRepo + .createQueryBuilder("profile") + .leftJoinAndSelect("profile.posLevel", "posLevel") + .leftJoinAndSelect("profile.posType", "posType") + .skip((1 - 1) * 20) + .take(20) + .getMany(); + const _commander = await this.profileRepo + .createQueryBuilder("profile") + .leftJoinAndSelect("profile.posLevel", "posLevel") + .leftJoinAndSelect("profile.posType", "posType") + .skip((1 - 1) * 20) + .take(20) + .getMany(); + const _chairman = await this.profileRepo + .createQueryBuilder("profile") + .leftJoinAndSelect("profile.posLevel", "posLevel") + .leftJoinAndSelect("profile.posType", "posType") + .skip((1 - 1) * 20) + .take(20) + .getMany(); const caregiver = _caregiver.map((_data) => ({ id: _data.id, From c1be9bc235b63012a7b83f8da1883791aea3a3b5 Mon Sep 17 00:00:00 2001 From: Bright Date: Tue, 11 Jun 2024 16:14:36 +0700 Subject: [PATCH 2/2] =?UTF-8?q?entity=20=E0=B8=A2=E0=B9=89=E0=B8=B2?= =?UTF-8?q?=E0=B8=A2=E0=B8=AA=E0=B8=B1=E0=B8=9A=E0=B9=80=E0=B8=9B=E0=B8=A5?= =?UTF-8?q?=E0=B8=B5=E0=B9=88=E0=B8=A2=E0=B8=99=E0=B8=95=E0=B8=B3=E0=B9=81?= =?UTF-8?q?=E0=B8=AB=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; +}