Merge branch 'develop' into adiDev

This commit is contained in:
AdisakKanthawilang 2024-03-13 10:44:23 +07:00
commit a94316e781
15 changed files with 356 additions and 20 deletions

View file

@ -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<string, any> },
) {
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<string, any> },
) {
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);
}
}

View file

@ -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();

View file

@ -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: {

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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 } });

View file

@ -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,

View file

@ -39,6 +39,9 @@ export class CreateEmployeePosLevel {
@Column()
posLevelRank: number;
@Column("uuid")
employeePosTypeId: string;
}
export type UpdateEmployeePosLevel= Partial<CreateEmployeePosLevel>;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -0,0 +1,38 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class UpdateTableChildRanksub1710298184697 implements MigrationInterface {
name = 'UpdateTableChildRanksub1710298184697'
public async up(queryRunner: QueryRunner): Promise<void> {
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<void> {
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\``);
}
}