288 lines
7.8 KiB
TypeScript
288 lines
7.8 KiB
TypeScript
import { Entity, Column, ManyToOne, JoinColumn, OneToMany } from "typeorm";
|
|
import { EntityBase } from "./base/Base";
|
|
import { CreatePosDict } from "./PosDict";
|
|
import { OrgRevision } from "./OrgRevision";
|
|
import { Position } from "./Position";
|
|
import { OrgRoot } from "./OrgRoot";
|
|
import { OrgChild1 } from "./OrgChild1";
|
|
import { OrgChild2 } from "./OrgChild2";
|
|
import { OrgChild3 } from "./OrgChild3";
|
|
import { OrgChild4 } from "./OrgChild4";
|
|
import { Profile } from "./Profile";
|
|
import { AuthRole } from "./AuthRole";
|
|
import { PosMasterAct } from "./PosMasterAct";
|
|
import { PosMasterAssign } from "./PosMasterAssign";
|
|
|
|
enum PosMasterLine {
|
|
MAIN = "MAIN",
|
|
SUPPORT = "SUPPORT",
|
|
}
|
|
|
|
@Entity("posMaster")
|
|
export class PosMaster extends EntityBase {
|
|
@Column({
|
|
nullable: true,
|
|
comment: "Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ)",
|
|
length: 16,
|
|
default: null,
|
|
})
|
|
posMasterNoPrefix: string;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
comment: "เลขที่ตำแหน่ง เป็นตัวเลข",
|
|
default: null,
|
|
})
|
|
posMasterNo: number;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
comment: "Suffix หลังเลขที่ตำแหน่ง เช่น ช.",
|
|
length: 16,
|
|
default: null,
|
|
})
|
|
posMasterNoSuffix: string;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
type: "datetime",
|
|
comment: "วัน-เวลาที่สร้าง",
|
|
default: null,
|
|
})
|
|
posMasterCreatedAt: Date;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
comment:
|
|
"รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้างและตำแหน่ง ตำแหน่งที่ทำสำเนามากับตำแหน่งเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขตำแหน่งย้อนหลังได้",
|
|
length: 40,
|
|
default: null,
|
|
})
|
|
ancestorDNA: string;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
comment: "ลำดับที่แสดงผล",
|
|
default: null,
|
|
})
|
|
posMasterOrder: number;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
comment: "ลำดับความสำคัญ",
|
|
default: null,
|
|
})
|
|
posMasterPriority: number;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
comment: "สายงานในอัตรากำลัง (หลัก / สนับสนุน) คนละฟิลด์กับสายงานของตำแหน่ง",
|
|
type: "enum",
|
|
enum: PosMasterLine,
|
|
default: null,
|
|
})
|
|
posMasterLine: PosMasterLine;
|
|
|
|
@Column({
|
|
comment: "นั่งทับตำแหน่งไหม",
|
|
default: false,
|
|
})
|
|
isSit: boolean;
|
|
|
|
@Column({
|
|
comment: "เป็นผู้อำนวยการ",
|
|
default: false,
|
|
})
|
|
isDirector: boolean;
|
|
|
|
@Column({
|
|
comment: "เป็นเจ้าหน้าที่",
|
|
default: false,
|
|
})
|
|
isStaff: boolean;
|
|
|
|
// @Column({
|
|
// comment: "เป็นสกจ",
|
|
// default: false,
|
|
// })
|
|
// isOfficer: boolean;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
comment: "ตำแหน่งใต้ลายเซ็นต์",
|
|
type: "text",
|
|
default: null,
|
|
})
|
|
positionSign: string;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
comment: "หมายเหตุ",
|
|
type: "text",
|
|
default: null,
|
|
})
|
|
reason: string;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
length: 40,
|
|
comment: "คีย์นอก(FK)ของตาราง orgRoot",
|
|
default: null,
|
|
})
|
|
orgRootId?: string | null;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
length: 40,
|
|
comment: "คีย์นอก(FK)ของตาราง orgChild1",
|
|
default: null,
|
|
})
|
|
orgChild1Id?: string | null;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
length: 40,
|
|
comment: "คีย์นอก(FK)ของตาราง orgChild2",
|
|
default: null,
|
|
})
|
|
orgChild2Id?: string | null;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
length: 40,
|
|
comment: "คีย์นอก(FK)ของตาราง orgChild3",
|
|
default: null,
|
|
})
|
|
orgChild3Id?: string | null;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
length: 40,
|
|
comment: "คีย์นอก(FK)ของตาราง orgChild4",
|
|
default: null,
|
|
})
|
|
orgChild4Id?: string | null;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
length: 40,
|
|
comment:
|
|
"คนครองปัจจุบัน เมื่อทำสำเนาโครงสร้างและตำแหน่งพร้อมกับคนครองมา คนครองจะอยู่ในฟิลด์นี้",
|
|
default: null,
|
|
})
|
|
current_holderId?: string | null;
|
|
|
|
@Column({
|
|
nullable: true,
|
|
length: 40,
|
|
comment:
|
|
"คนที่กำลังจะมาครอง ตอนปรับโครงสร้าง ถ้าเลือกให้ใครมาครอง ProfileId ของคนนั้นจะมาอยู่ในช่องนี้ รวมทั้งตอนเลือกตำแหน่งเพื่อบรรจุ แต่งตั้ง เลื่อน ย้าย ในระบบบรรจุแต่งตั้งด้วย",
|
|
default: null,
|
|
})
|
|
next_holderId?: string | null;
|
|
|
|
@Column({
|
|
length: 40,
|
|
comment: "คีย์นอก(FK)ของตาราง orgRevision",
|
|
})
|
|
orgRevisionId: string; //fk
|
|
|
|
@Column({
|
|
nullable: true,
|
|
default: null,
|
|
length: 40,
|
|
comment: "คีย์นอก(FK)ของตาราง authRole",
|
|
})
|
|
authRoleId: string;
|
|
|
|
@ManyToOne(() => AuthRole, (authRole) => authRole.posMasters)
|
|
@JoinColumn({ name: "authRoleId" })
|
|
authRole: AuthRole;
|
|
|
|
@ManyToOne(() => OrgRevision, (orgRevision) => orgRevision.posMasters)
|
|
@JoinColumn({ name: "orgRevisionId" })
|
|
orgRevision: OrgRevision;
|
|
|
|
@ManyToOne(() => OrgRoot, (orgRoot) => orgRoot.posMasters)
|
|
@JoinColumn({ name: "orgRootId" })
|
|
orgRoot: OrgRoot;
|
|
|
|
@ManyToOne(() => OrgChild1, (orgChild1) => orgChild1.posMasters)
|
|
@JoinColumn({ name: "orgChild1Id" })
|
|
orgChild1: OrgChild1;
|
|
|
|
@ManyToOne(() => OrgChild2, (orgChild2) => orgChild2.posMasters)
|
|
@JoinColumn({ name: "orgChild2Id" })
|
|
orgChild2: OrgChild2;
|
|
|
|
@ManyToOne(() => OrgChild3, (orgChild3) => orgChild3.posMasters)
|
|
@JoinColumn({ name: "orgChild3Id" })
|
|
orgChild3: OrgChild3;
|
|
|
|
@ManyToOne(() => OrgChild4, (orgChild4) => orgChild4.posMasters)
|
|
@JoinColumn({ name: "orgChild4Id" })
|
|
orgChild4: OrgChild4;
|
|
|
|
@ManyToOne(() => Profile, (posMaster) => posMaster.current_holders)
|
|
@JoinColumn({ name: "current_holderId" })
|
|
current_holder: Profile;
|
|
|
|
@ManyToOne(() => Profile, (posMaster) => posMaster.next_holders)
|
|
@JoinColumn({ name: "next_holderId" })
|
|
next_holder: Profile;
|
|
|
|
@OneToMany(() => Position, (position) => position.posMaster)
|
|
positions: Position[];
|
|
|
|
@OneToMany(() => PosMasterAct, (posMasterAct) => posMasterAct.posMaster)
|
|
posMasterActs: PosMasterAct[];
|
|
|
|
@OneToMany(() => PosMasterAct, (posMasterAct) => posMasterAct.posMasterChild)
|
|
posMasterActChilds: PosMasterAct[];
|
|
|
|
@OneToMany(() => PosMasterAssign, (posMasterAssign) => posMasterAssign.posMaster)
|
|
posMasterAssigns: PosMasterAssign[];
|
|
}
|
|
|
|
export class CreatePosMaster {
|
|
@Column()
|
|
posMasterNoPrefix: string;
|
|
|
|
@Column()
|
|
posMasterNo: number;
|
|
|
|
@Column()
|
|
posMasterNoSuffix: string;
|
|
|
|
@Column("uuid")
|
|
positions: CreatePosDict[];
|
|
|
|
@Column("uuid")
|
|
orgRootId?: string | null;
|
|
|
|
@Column("uuid")
|
|
orgChild1Id?: string | null;
|
|
|
|
@Column("uuid")
|
|
orgChild2Id?: string | null;
|
|
|
|
@Column("uuid")
|
|
orgChild3Id?: string | null;
|
|
|
|
@Column("uuid")
|
|
orgChild4Id?: string | null;
|
|
|
|
@Column()
|
|
reason: string | null;
|
|
|
|
@Column()
|
|
isDirector: boolean;
|
|
|
|
@Column()
|
|
isStaff: boolean;
|
|
|
|
@Column()
|
|
positionSign: string | null;
|
|
}
|
|
|
|
export type UpdatePosMaster = Partial<PosMaster>;
|