2024-01-30 15:00:56 +07:00
import { Entity , Column , ManyToOne , JoinColumn , OneToOne , OneToMany } from "typeorm" ;
import { EntityBase } from "./base/Base" ;
2024-01-31 11:00:51 +07:00
import { CreatePosDict } from "./PosDict" ;
2024-01-30 15:00:56 +07:00
enum PosMasterLine {
MAIN = "MAIN" ,
SUPPORT = "SUPPORT" ,
}
@Entity ( "posMaster" )
export class PosMaster extends EntityBase {
@Column ( {
nullable : true ,
comment : "Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ)" ,
length : 16 ,
default : "string" ,
} )
posMasterNoPrefix : string ;
@Column ( {
nullable : true ,
comment : "เลขที่ตำแหน่ง เป็นตัวเลข" ,
length : 16 ,
default : "string" ,
} )
posMasterNo : string ;
@Column ( {
nullable : true ,
comment : "Suffix หลังเลขที่ตำแหน่ง เช่น ช." ,
length : 16 ,
default : "string" ,
} )
posMasterNoSuffix : string ;
@Column ( {
nullable : true ,
type : "datetime" ,
comment : "วัน-เวลาที่สร้าง" ,
} )
posMasterCreatedAt : Date ;
@Column ( {
nullable : true ,
comment :
"รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้างและตำแหน่ง ตำแหน่งที่ทำสำเนามากับตำแหน่งเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขตำแหน่งย้อนหลังได้" ,
length : 40 ,
default : "string" ,
} )
ancestorDNA : string ;
@Column ( {
nullable : true ,
comment : "ลำดับที่แสดงผล" ,
} )
posMasterOrder : number ;
@Column ( {
nullable : true ,
comment : "ลำดับความสำคัญ" ,
} )
posMasterPriority : number ;
@Column ( {
nullable : true ,
comment : "สายงานในอัตรากำลัง (หลัก / สนับสนุน) คนละฟิลด์กับสายงานของตำแหน่ง" ,
type : "enum" ,
enum : PosMasterLine ,
} )
posMasterLine : PosMasterLine ;
@Column ( {
nullable : true ,
length : 40 ,
default : "00000000-0000-0000-0000-000000000000" ,
} )
orgRootId : string ;
@Column ( {
nullable : true ,
length : 40 ,
default : "00000000-0000-0000-0000-000000000000" ,
} )
orgChild1Id : string ;
@Column ( {
nullable : true ,
length : 40 ,
default : "00000000-0000-0000-0000-000000000000" ,
} )
orgChild2Id : string ;
@Column ( {
nullable : true ,
length : 40 ,
default : "00000000-0000-0000-0000-000000000000" ,
} )
orgChild3Id : string ;
@Column ( {
nullable : true ,
length : 40 ,
default : "00000000-0000-0000-0000-000000000000" ,
} )
orgChild4Id : string ;
@Column ( {
nullable : true ,
length : 40 ,
2024-01-31 11:00:51 +07:00
comment :
"คนครองปัจจุบัน เมื่อทำสำเนาโครงสร้างและตำแหน่งพร้อมกับคนครองมา คนครองจะอยู่ในฟิลด์นี้" ,
2024-01-30 15:00:56 +07:00
default : "string" ,
} )
profileIdCurrentHolder : string ;
@Column ( {
nullable : true ,
length : 40 ,
2024-01-31 11:00:51 +07:00
comment :
"คนที่กำลังจะมาครอง ตอนปรับโครงสร้าง ถ้าเลือกให้ใครมาครอง ProfileId ของคนนั้นจะมาอยู่ในช่องนี้ รวมทั้งตอนเลือกตำแหน่งเพื่อบรรจุ แต่งตั้ง เลื่อน ย้าย ในระบบบรรจุแต่งตั้งด้วย" ,
2024-01-30 15:00:56 +07:00
default : "string" ,
} )
profileIdNextHolder : string ;
@Column ( {
length : 40 ,
default : "00000000-0000-0000-0000-000000000000" ,
} )
2024-01-31 11:00:51 +07:00
orgRevisionId : string ; //fk
2024-01-30 15:00:56 +07:00
}
2024-01-31 11:00:51 +07:00
export class CreatePosMaster {
@Column ( )
posMasterNoPrefix : string ;
@Column ( )
posMasterNo : string ;
@Column ( )
posMasterNoSuffix : string ;
@Column ( "uuid" )
positions : CreatePosDict [ ] ;
@Column ( "uuid" )
2024-01-31 13:24:02 +07:00
orgRootId? : string ;
2024-01-31 11:00:51 +07:00
@Column ( "uuid" )
2024-01-31 13:24:02 +07:00
orgChild1Id? : string ;
2024-01-31 11:00:51 +07:00
@Column ( "uuid" )
2024-01-31 13:24:02 +07:00
orgChild2Id? : string ;
2024-01-31 11:00:51 +07:00
@Column ( "uuid" )
2024-01-31 13:24:02 +07:00
orgChild3Id? : string ;
2024-01-31 11:00:51 +07:00
@Column ( "uuid" )
2024-01-31 13:24:02 +07:00
orgChild4Id? : string ;
2024-01-31 11:00:51 +07:00
}
export type UpdatePosMaster = Partial < PosMaster > ;