Merge branch 'develop' into adiDev
This commit is contained in:
commit
21aa51ff99
4 changed files with 275 additions and 27 deletions
253
src/controllers/OrganizationUnauthorizeController.ts
Normal file
253
src/controllers/OrganizationUnauthorizeController.ts
Normal file
|
|
@ -0,0 +1,253 @@
|
|||
import {
|
||||
Controller,
|
||||
Get,
|
||||
Post,
|
||||
Put,
|
||||
Delete,
|
||||
Patch,
|
||||
Route,
|
||||
Security,
|
||||
Tags,
|
||||
Body,
|
||||
Path,
|
||||
Request,
|
||||
Example,
|
||||
SuccessResponse,
|
||||
Response,
|
||||
Query,
|
||||
} from "tsoa";
|
||||
import { OrgRevision } from "../entities/OrgRevision";
|
||||
import { AppDataSource } from "../database/data-source";
|
||||
import HttpSuccess from "../interfaces/http-success";
|
||||
import HttpError from "../interfaces/http-error";
|
||||
import HttpStatusCode from "../interfaces/http-status";
|
||||
import { Brackets, IsNull, Not } from "typeorm";
|
||||
import { OrgRoot } from "../entities/OrgRoot";
|
||||
import { PosMaster } from "../entities/PosMaster";
|
||||
|
||||
@Route("api/v1/org/unauthorize")
|
||||
@Tags("OrganizationUnauthorize")
|
||||
@Response(
|
||||
HttpStatusCode.INTERNAL_SERVER_ERROR,
|
||||
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
|
||||
)
|
||||
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
|
||||
export class OrganizationUnauthorizeController extends Controller {
|
||||
private orgRevisionRepository = AppDataSource.getRepository(OrgRevision);
|
||||
private orgRootRepository = AppDataSource.getRepository(OrgRoot);
|
||||
|
||||
/**
|
||||
* API รายชื่อราชการที่เลื่อนเงินเดือน (unauthorize)
|
||||
*
|
||||
* @summary ORG_072 - รายชื่อราชการที่เลื่อนเงินเดือน #76 (unauthorize)
|
||||
*
|
||||
*/
|
||||
@Post("salary/gen")
|
||||
async salaryGen(
|
||||
@Body()
|
||||
body: {
|
||||
page: number;
|
||||
pageSize: number;
|
||||
keyword?: string;
|
||||
},
|
||||
) {
|
||||
const findRevision = await this.orgRevisionRepository.findOne({
|
||||
where: { orgRevisionIsCurrent: true },
|
||||
});
|
||||
if (!findRevision) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "not found. OrgRevision");
|
||||
}
|
||||
|
||||
const [findPosMaster, total] = await AppDataSource.getRepository(PosMaster)
|
||||
.createQueryBuilder("posMaster")
|
||||
.leftJoinAndSelect("posMaster.current_holder", "current_holder")
|
||||
.leftJoinAndSelect("posMaster.orgRoot", "orgRoot")
|
||||
.leftJoinAndSelect("posMaster.orgChild1", "orgChild1")
|
||||
.leftJoinAndSelect("posMaster.orgChild2", "orgChild2")
|
||||
.leftJoinAndSelect("posMaster.orgChild3", "orgChild3")
|
||||
.leftJoinAndSelect("posMaster.orgChild4", "orgChild4")
|
||||
.leftJoinAndSelect("posMaster.positions", "positions")
|
||||
.leftJoinAndSelect("positions.posExecutive", "posExecutive")
|
||||
.leftJoinAndSelect("current_holder.profileSalary", "profileSalary")
|
||||
.leftJoinAndSelect("current_holder.posLevel", "posLevel")
|
||||
.leftJoinAndSelect("current_holder.posType", "posType")
|
||||
.where({
|
||||
orgRevisionId: findRevision?.id,
|
||||
current_holderId: Not(IsNull()),
|
||||
})
|
||||
.andWhere(
|
||||
new Brackets((qb) => {
|
||||
qb.where(
|
||||
body.keyword != null && body.keyword != ""
|
||||
? "current_holder.prefix LIKE :keyword"
|
||||
: "1=1",
|
||||
{
|
||||
keyword: `%${body.keyword}%`,
|
||||
},
|
||||
)
|
||||
.orWhere(
|
||||
body.keyword != null && body.keyword != ""
|
||||
? "current_holder.firstName LIKE :keyword"
|
||||
: "1=1",
|
||||
{
|
||||
keyword: `%${body.keyword}%`,
|
||||
},
|
||||
)
|
||||
.orWhere(
|
||||
body.keyword != null && body.keyword != ""
|
||||
? "current_holder.lastName LIKE :keyword"
|
||||
: "1=1",
|
||||
{
|
||||
keyword: `%${body.keyword}%`,
|
||||
},
|
||||
)
|
||||
.orWhere(
|
||||
body.keyword != null && body.keyword != ""
|
||||
? "current_holder.position LIKE :keyword"
|
||||
: "1=1",
|
||||
{
|
||||
keyword: `%${body.keyword}%`,
|
||||
},
|
||||
)
|
||||
|
||||
.orWhere(
|
||||
body.keyword != null && body.keyword != ""
|
||||
? "current_holder.citizenId LIKE :keyword"
|
||||
: "1=1",
|
||||
{
|
||||
keyword: `%${body.keyword}%`,
|
||||
},
|
||||
)
|
||||
.orWhere(
|
||||
body.keyword != null && body.keyword != ""
|
||||
? "posType.posTypeName LIKE :keyword"
|
||||
: "1=1",
|
||||
{
|
||||
keyword: `%${body.keyword}%`,
|
||||
},
|
||||
)
|
||||
.orWhere(
|
||||
body.keyword != null && body.keyword != ""
|
||||
? "posLevel.posLevelName LIKE :keyword"
|
||||
: "1=1",
|
||||
{
|
||||
keyword: `%${body.keyword}%`,
|
||||
},
|
||||
);
|
||||
}),
|
||||
)
|
||||
.skip((body.page - 1) * body.pageSize)
|
||||
.take(body.pageSize)
|
||||
.getManyAndCount();
|
||||
if (!findPosMaster) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "not found. PosMaster");
|
||||
}
|
||||
|
||||
const formattedData = findPosMaster.map((item) => {
|
||||
let orgShortName = "";
|
||||
|
||||
if (item.orgChild1Id === null) {
|
||||
orgShortName = item.orgRoot?.orgRootShortName;
|
||||
} else if (item.orgChild2Id === null) {
|
||||
orgShortName = item.orgChild1?.orgChild1ShortName;
|
||||
} else if (item.orgChild3Id === null) {
|
||||
orgShortName = item.orgChild2?.orgChild2ShortName;
|
||||
} else if (item.orgChild4Id === null) {
|
||||
orgShortName = item.orgChild3?.orgChild3ShortName;
|
||||
} else {
|
||||
orgShortName = item.orgChild4?.orgChild4ShortName;
|
||||
}
|
||||
const posExecutive =
|
||||
item.positions == null ||
|
||||
item.positions?.find((position) => position.positionIsSelected == true) == null ||
|
||||
item.positions?.find((position) => position.positionIsSelected == true)?.posExecutive ==
|
||||
null ||
|
||||
item.positions?.find((position) => position.positionIsSelected == true)?.posExecutive
|
||||
?.posExecutiveName == null
|
||||
? null
|
||||
: item.positions?.find((position) => position.positionIsSelected == true)?.posExecutive
|
||||
.posExecutiveName;
|
||||
|
||||
const amount =
|
||||
item.current_holder == null || item.current_holder.profileSalary.length == 0
|
||||
? null
|
||||
: item.current_holder.profileSalary.sort((a: any, b: any) => b.date - a.date)[0].amount;
|
||||
|
||||
return {
|
||||
prefix: item.current_holder.prefix,
|
||||
firstName: item.current_holder.firstName,
|
||||
lastName: item.current_holder.lastName,
|
||||
citizenId: item.current_holder.citizenId,
|
||||
posMasterNoPrefix: item.posMasterNoPrefix,
|
||||
posMasterNo: item.posMasterNo,
|
||||
posMasterNoSuffix: item.posMasterNoSuffix,
|
||||
orgShortName: orgShortName,
|
||||
position: item.current_holder.position,
|
||||
posType: item.current_holder.posType.posTypeName,
|
||||
posLevel: item.current_holder.posLevel.posLevelName,
|
||||
posExecutive: posExecutive,
|
||||
amount: amount ? amount : null,
|
||||
rootId: item.orgRootId,
|
||||
root: item.orgRoot?.orgRootName ? item.orgRoot.orgRootName : null,
|
||||
child1Id: item.orgChild1Id,
|
||||
child1: item.orgChild1?.orgChild1Name ? item.orgChild1.orgChild1Name : null,
|
||||
child2Id: item.orgChild2Id,
|
||||
child2: item.orgChild2?.orgChild2Name ? item.orgChild2.orgChild2Name : null,
|
||||
child3Id: item.orgChild3Id,
|
||||
child3: item.orgChild3?.orgChild3Name ? item.orgChild3.orgChild3Name : null,
|
||||
child4Id: item.orgChild4Id,
|
||||
child4: item.orgChild4?.orgChild4Name ? item.orgChild4.orgChild4Name : null,
|
||||
result: null,
|
||||
duration: null,
|
||||
punish: null,
|
||||
retired: null,
|
||||
retired2: null,
|
||||
isRetired: false,
|
||||
};
|
||||
});
|
||||
|
||||
return new HttpSuccess({ data: formattedData, total: total });
|
||||
}
|
||||
|
||||
/**
|
||||
* API หาสำนักทั้งหมด (unauthorize)
|
||||
*
|
||||
* @summary หาสำนักทั้งหมด (unauthorize)
|
||||
*
|
||||
*/
|
||||
@Get("active/root/id")
|
||||
async _GetActiveRootId() {
|
||||
try {
|
||||
const orgRevisionActive = await this.orgRevisionRepository.findOne({
|
||||
where: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false },
|
||||
});
|
||||
if (!orgRevisionActive) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบโครงสร้างที่เผยแพร๋อยู่ตอนนี้");
|
||||
}
|
||||
|
||||
const data = await this.orgRootRepository.find({
|
||||
where: { orgRevisionId: orgRevisionActive.id },
|
||||
});
|
||||
return new HttpSuccess(data.map((x) => x.id));
|
||||
} catch (error) {
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* API หา revision ล่าสุด (unauthorize)
|
||||
*
|
||||
* @summary หา revision ล่าสุด (unauthorize)
|
||||
*
|
||||
*/
|
||||
@Get("revision/latest")
|
||||
async _salaryGen() {
|
||||
const findRevision = await this.orgRevisionRepository.findOne({
|
||||
where: { orgRevisionIsCurrent: true },
|
||||
});
|
||||
if (!findRevision) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบโครงสร้างล่าสุด");
|
||||
}
|
||||
return new HttpSuccess(findRevision.id);
|
||||
}
|
||||
}
|
||||
|
|
@ -397,35 +397,30 @@ export class PositionController extends Controller {
|
|||
orgRoot = await this.orgRootRepository.findOne({
|
||||
where: { id: requestBody.orgRootId },
|
||||
});
|
||||
SName = orgRoot.orgRootShortName;
|
||||
if (!orgRoot) {
|
||||
let orgChild1: any = null;
|
||||
if (requestBody.orgChild1Id != null)
|
||||
orgChild1 = await this.child1Repository.findOne({
|
||||
where: { id: requestBody.orgChild1Id },
|
||||
});
|
||||
SName = orgChild1.orgChild1ShortName;
|
||||
if (!orgChild1) {
|
||||
let orgChild2: any = null;
|
||||
if (requestBody.orgChild2Id != null)
|
||||
orgChild2 = await this.child2Repository.findOne({
|
||||
where: { id: requestBody.orgChild2Id },
|
||||
});
|
||||
SName = orgChild2.orgChild2ShortName;
|
||||
if (!orgChild2) {
|
||||
let orgChild3: any = null;
|
||||
if (requestBody.orgChild3Id != null)
|
||||
orgChild3 = await this.child3Repository.findOne({
|
||||
where: { id: requestBody.orgChild3Id },
|
||||
});
|
||||
SName = orgChild3.orgChild3ShortName;
|
||||
if (!orgChild3) {
|
||||
let orgChild4: any = null;
|
||||
if (requestBody.orgChild4Id != null)
|
||||
orgChild4 = await this.child4Repository.findOne({
|
||||
where: { id: requestBody.orgChild4Id },
|
||||
});
|
||||
SName = orgChild4.orgChild4ShortName;
|
||||
if (!orgChild4) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงสร้าง");
|
||||
} else {
|
||||
|
|
@ -445,6 +440,7 @@ export class PositionController extends Controller {
|
|||
posMaster.orgChild3Id = orgChild4.orgChild3Id;
|
||||
posMaster.orgChild4Id = orgChild4.id;
|
||||
posMaster.orgRevisionId = orgChild4.orgRevisionId;
|
||||
SName = orgChild4.orgChild4ShortName;
|
||||
}
|
||||
} else {
|
||||
const order: any = await this.posMasterRepository.findOne({
|
||||
|
|
@ -463,6 +459,7 @@ export class PositionController extends Controller {
|
|||
posMaster.orgChild2Id = orgChild3.orgChild2Id;
|
||||
posMaster.orgChild3Id = orgChild3.id;
|
||||
posMaster.orgRevisionId = orgChild3.orgRevisionId;
|
||||
SName = orgChild3.orgChild3ShortName;
|
||||
}
|
||||
} else {
|
||||
const order: any = await this.posMasterRepository.findOne({
|
||||
|
|
@ -481,6 +478,7 @@ export class PositionController extends Controller {
|
|||
posMaster.orgChild1Id = orgChild2.orgChild1Id;
|
||||
posMaster.orgChild2Id = orgChild2.id;
|
||||
posMaster.orgRevisionId = orgChild2.orgRevisionId;
|
||||
SName = orgChild2.orgChild2ShortName;
|
||||
}
|
||||
} else {
|
||||
const order: any = await this.posMasterRepository.findOne({
|
||||
|
|
@ -499,6 +497,7 @@ export class PositionController extends Controller {
|
|||
posMaster.orgRootId = orgChild1.orgRootId;
|
||||
posMaster.orgChild1Id = orgChild1.id;
|
||||
posMaster.orgRevisionId = orgChild1.orgRevisionId;
|
||||
SName = orgChild1.orgChild1ShortName;
|
||||
}
|
||||
} else {
|
||||
const order: any = await this.posMasterRepository.findOne({
|
||||
|
|
@ -517,6 +516,7 @@ export class PositionController extends Controller {
|
|||
: 1;
|
||||
posMaster.orgRootId = orgRoot.id;
|
||||
posMaster.orgRevisionId = orgRoot.orgRevisionId;
|
||||
SName = orgRoot.orgRootShortName;
|
||||
}
|
||||
|
||||
const chk_SName0 = await this.posMasterRepository.findOne({
|
||||
|
|
@ -680,35 +680,30 @@ export class PositionController extends Controller {
|
|||
orgRoot = await this.orgRootRepository.findOne({
|
||||
where: { id: requestBody.orgRootId },
|
||||
});
|
||||
SName = orgRoot.orgRootShortName;
|
||||
if (!orgRoot) {
|
||||
let orgChild1: any = null;
|
||||
if (requestBody.orgChild1Id != null)
|
||||
orgChild1 = await this.child1Repository.findOne({
|
||||
where: { id: requestBody.orgChild1Id },
|
||||
});
|
||||
SName = orgChild1.orgChild1ShortName;
|
||||
if (!orgChild1) {
|
||||
let orgChild2: any = null;
|
||||
if (requestBody.orgChild2Id != null)
|
||||
orgChild2 = await this.child2Repository.findOne({
|
||||
where: { id: requestBody.orgChild2Id },
|
||||
});
|
||||
SName = orgChild2.orgChild2ShortName;
|
||||
if (!orgChild2) {
|
||||
let orgChild3: any = null;
|
||||
if (requestBody.orgChild3Id != null)
|
||||
orgChild3 = await this.child3Repository.findOne({
|
||||
where: { id: requestBody.orgChild3Id },
|
||||
});
|
||||
SName = orgChild3.orgChild3ShortName;
|
||||
if (!orgChild3) {
|
||||
let orgChild4: any = null;
|
||||
if (requestBody.orgChild4Id != null)
|
||||
orgChild4 = await this.child4Repository.findOne({
|
||||
where: { id: requestBody.orgChild4Id },
|
||||
});
|
||||
SName = orgChild4.orgChild4ShortName;
|
||||
if (!orgChild4) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงสร้าง");
|
||||
} else {
|
||||
|
|
@ -718,6 +713,7 @@ export class PositionController extends Controller {
|
|||
posMaster.orgChild3Id = orgChild4.orgChild3Id;
|
||||
posMaster.orgChild4Id = orgChild4.id;
|
||||
posMaster.orgRevisionId = orgChild4.orgRevisionId;
|
||||
SName = orgChild4.orgChild4ShortName;
|
||||
}
|
||||
} else {
|
||||
posMaster.orgRootId = orgChild3.orgRootId;
|
||||
|
|
@ -725,21 +721,25 @@ export class PositionController extends Controller {
|
|||
posMaster.orgChild2Id = orgChild3.orgChild2Id;
|
||||
posMaster.orgChild3Id = orgChild3.id;
|
||||
posMaster.orgRevisionId = orgChild3.orgRevisionId;
|
||||
SName = orgChild3.orgChild3ShortName;
|
||||
}
|
||||
} else {
|
||||
posMaster.orgRootId = orgChild2.orgRootId;
|
||||
posMaster.orgChild1Id = orgChild2.orgChild1Id;
|
||||
posMaster.orgChild2Id = orgChild2.id;
|
||||
posMaster.orgRevisionId = orgChild2.orgRevisionId;
|
||||
SName = orgChild2.orgChild2ShortName;
|
||||
}
|
||||
} else {
|
||||
posMaster.orgRootId = orgChild1.orgRootId;
|
||||
posMaster.orgChild1Id = orgChild1.id;
|
||||
posMaster.orgRevisionId = orgChild1.orgRevisionId;
|
||||
SName = orgChild1.orgChild1ShortName;
|
||||
}
|
||||
} else {
|
||||
posMaster.orgRootId = orgRoot.id;
|
||||
posMaster.orgRevisionId = orgRoot.orgRevisionId;
|
||||
SName = orgRoot.orgRootShortName;
|
||||
}
|
||||
|
||||
const chk_SName0 = await this.posMasterRepository.findOne({
|
||||
|
|
@ -1971,10 +1971,7 @@ export class PositionController extends Controller {
|
|||
relations: ["positions"],
|
||||
});
|
||||
if (!dataMaster) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ไม่พบข้อมูลตำแหน่งนี้"
|
||||
);
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งนี้");
|
||||
}
|
||||
dataMaster.positions.forEach(async (position) => {
|
||||
if (position.id === requestBody.position) {
|
||||
|
|
@ -2045,10 +2042,7 @@ export class PositionController extends Controller {
|
|||
},
|
||||
});
|
||||
if (!dataPublish) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ไม่พบข้อมูลตำแหน่งนี้",
|
||||
);
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งนี้");
|
||||
}
|
||||
|
||||
const dataDraft = await this.posMasterRepository.findOne({
|
||||
|
|
@ -2057,10 +2051,7 @@ export class PositionController extends Controller {
|
|||
},
|
||||
});
|
||||
if (!dataDraft) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ไม่พบข้อมูลตำแหน่งนี้"
|
||||
);
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งนี้");
|
||||
}
|
||||
|
||||
await this.posMasterRepository.update(
|
||||
|
|
|
|||
|
|
@ -1043,7 +1043,7 @@ export class ProfileController extends Controller {
|
|||
posType: item.current_holder.posType.posTypeName,
|
||||
posLevel: item.current_holder.posLevel.posLevelName,
|
||||
posExecutive: posExecutive,
|
||||
amount: amount ? amount : 0,
|
||||
amount: amount ? amount : null,
|
||||
// revisionId: item.orgRevisionId,
|
||||
rootId: item.orgRootId,
|
||||
root: item.orgRoot?.orgRootName ? item.orgRoot.orgRootName : null,
|
||||
|
|
@ -1055,11 +1055,12 @@ export class ProfileController extends Controller {
|
|||
child3: item.orgChild3?.orgChild3Name ? item.orgChild3.orgChild3Name : null,
|
||||
child4Id: item.orgChild4Id,
|
||||
child4: item.orgChild4?.orgChild4Name ? item.orgChild4.orgChild4Name : null,
|
||||
isResult: true,
|
||||
isDuration: false,
|
||||
isPunish: true,
|
||||
result: null,
|
||||
duration: null,
|
||||
punish: null,
|
||||
retired: null,
|
||||
retired2: null,
|
||||
isRetired: false,
|
||||
isRetired2: true,
|
||||
};
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -76,6 +76,9 @@
|
|||
},
|
||||
{
|
||||
"name": "EducationLevel", "description": "ระดับการศึกษา"
|
||||
},
|
||||
{
|
||||
"name": "OrganizationUnauthorize", "description": "โครงสร้างส่วนอื่น ๆ (Unauthorize)"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue