fix assign

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2025-01-21 12:14:28 +07:00
parent fc3f40722e
commit 2709fff7ea

View file

@ -21,12 +21,21 @@ import { findEndDate, setLogDataDiff } from "../interfaces/utils";
import { Personal } from "../entities/Personal"; import { Personal } from "../entities/Personal";
import permission from "../interfaces/permission"; import permission from "../interfaces/permission";
import { Assign, CreateAssign } from "../entities/Assign"; import { Assign, CreateAssign } from "../entities/Assign";
import { AssignDirector, CreateAssignDirector } from "../entities/AssignDirector"; import {
AssignDirector,
CreateAssignDirector,
} from "../entities/AssignDirector";
import { AssignJob, CreateAssignJob } from "../entities/AssignJob"; import { AssignJob, CreateAssignJob } from "../entities/AssignJob";
import { AssignKnowledge, CreateAssignKnowledge } from "../entities/AssignKnowledge"; import {
AssignKnowledge,
CreateAssignKnowledge,
} from "../entities/AssignKnowledge";
import { AssignLaw, CreateAssignLaw } from "../entities/AssignLaw"; import { AssignLaw, CreateAssignLaw } from "../entities/AssignLaw";
import { AssignSkill, CreateAssignSkill } from "../entities/AssignSkill"; import { AssignSkill, CreateAssignSkill } from "../entities/AssignSkill";
import { AssignCompetency, CreateAssignCompetency } from "../entities/AssignCompetency"; import {
AssignCompetency,
CreateAssignCompetency,
} from "../entities/AssignCompetency";
import { import {
AssignCompetencyGroup, AssignCompetencyGroup,
CreateAssignCompetencyGroup, CreateAssignCompetencyGroup,
@ -40,18 +49,23 @@ import CallAPI from "../interfaces/call-api";
@Security("bearerAuth") @Security("bearerAuth")
@Response( @Response(
HttpStatusCode.INTERNAL_SERVER_ERROR, HttpStatusCode.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง", "เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง"
) )
export class AssignController extends Controller { export class AssignController extends Controller {
private assignRepository = AppDataSource.getRepository(Assign); private assignRepository = AppDataSource.getRepository(Assign);
private personalRepository = AppDataSource.getRepository(Personal); private personalRepository = AppDataSource.getRepository(Personal);
private assignDirectorRepository = AppDataSource.getRepository(AssignDirector); private assignDirectorRepository =
AppDataSource.getRepository(AssignDirector);
private assignJobRepository = AppDataSource.getRepository(AssignJob); private assignJobRepository = AppDataSource.getRepository(AssignJob);
private assignKnowledgeRepository = AppDataSource.getRepository(AssignKnowledge); private assignKnowledgeRepository =
AppDataSource.getRepository(AssignKnowledge);
private assignLawRepository = AppDataSource.getRepository(AssignLaw); private assignLawRepository = AppDataSource.getRepository(AssignLaw);
private assignSkillRepository = AppDataSource.getRepository(AssignSkill); private assignSkillRepository = AppDataSource.getRepository(AssignSkill);
private assignCompetencyRepository = AppDataSource.getRepository(AssignCompetency); private assignCompetencyRepository =
private assignCompetencyGroupRepository = AppDataSource.getRepository(AssignCompetencyGroup); AppDataSource.getRepository(AssignCompetency);
private assignCompetencyGroupRepository = AppDataSource.getRepository(
AssignCompetencyGroup
);
private assignOutputRepository = AppDataSource.getRepository(AssignOutput); private assignOutputRepository = AppDataSource.getRepository(AssignOutput);
private lawsRepository = AppDataSource.getRepository(Law); private lawsRepository = AppDataSource.getRepository(Law);
@ -73,7 +87,10 @@ export class AssignController extends Controller {
* *
*/ */
@Post("") @Post("")
async AddAssign(@Request() request: RequestWithUser, @Body() requestBody: CreateAssign) { async AddAssign(
@Request() request: RequestWithUser,
@Body() requestBody: CreateAssign
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION"); await new permission().PermissionUpdate(request, "SYS_PROBATION");
const person = await this.personalRepository.findOne({ const person = await this.personalRepository.findOne({
where: { where: {
@ -108,15 +125,17 @@ export class AssignController extends Controller {
const assign = await this.assignRepository.save(data, { data: request }); const assign = await this.assignRepository.save(data, { data: request });
setLogDataDiff(request, { before, after: data }); setLogDataDiff(request, { before, after: data });
const jobs = await requestBody.assign_jobs.map((x: CreateAssignJob, index: number) => ({ const jobs = await requestBody.assign_jobs.map(
...x, (x: CreateAssignJob, index: number) => ({
id: index + 1, ...x,
assign_id: assign.id, id: index + 1,
createdUserId: request.user.sub, assign_id: assign.id,
createdFullName: request.user.name, createdUserId: request.user.sub,
updateUserId: request.user.sub, createdFullName: request.user.name,
updateFullName: request.user.name, updateUserId: request.user.sub,
})); updateFullName: request.user.name,
})
);
await this.assignJobRepository.save(jobs, { data: request }); await this.assignJobRepository.save(jobs, { data: request });
setLogDataDiff(request, { before, after: jobs }); setLogDataDiff(request, { before, after: jobs });
@ -129,32 +148,36 @@ export class AssignController extends Controller {
createdFullName: request.user.name, createdFullName: request.user.name,
updateUserId: request.user.sub, updateUserId: request.user.sub,
updateFullName: request.user.name, updateFullName: request.user.name,
}), })
); );
await this.assignKnowledgeRepository.save(knowledges, { data: request }); await this.assignKnowledgeRepository.save(knowledges, { data: request });
setLogDataDiff(request, { before, after: knowledges }); setLogDataDiff(request, { before, after: knowledges });
const laws = await requestBody.assign_law.map((x: CreateAssignLaw, index: number) => ({ const laws = await requestBody.assign_law.map(
ordering: index + 1, (x: CreateAssignLaw, index: number) => ({
law_id: x.id, ordering: index + 1,
assign_id: assign.id, law_id: x.id,
createdUserId: request.user.sub, assign_id: assign.id,
createdFullName: request.user.name, createdUserId: request.user.sub,
updateUserId: request.user.sub, createdFullName: request.user.name,
updateFullName: request.user.name, updateUserId: request.user.sub,
})); updateFullName: request.user.name,
})
);
await this.assignLawRepository.save(laws, { data: request }); await this.assignLawRepository.save(laws, { data: request });
setLogDataDiff(request, { before, after: laws }); setLogDataDiff(request, { before, after: laws });
const skills = await requestBody.assign_skill.map((x: CreateAssignSkill, index: number) => ({ const skills = await requestBody.assign_skill.map(
skill_id: index + 1, (x: CreateAssignSkill, index: number) => ({
skill_level: x.level, skill_id: index + 1,
assign_id: assign.id, skill_level: x.level,
createdUserId: request.user.sub, assign_id: assign.id,
createdFullName: request.user.name, createdUserId: request.user.sub,
updateUserId: request.user.sub, createdFullName: request.user.name,
updateFullName: request.user.name, updateUserId: request.user.sub,
})); updateFullName: request.user.name,
})
);
await this.assignSkillRepository.save(skills, { data: request }); await this.assignSkillRepository.save(skills, { data: request });
setLogDataDiff(request, { before, after: skills }); setLogDataDiff(request, { before, after: skills });
@ -169,7 +192,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name, createdFullName: request.user.name,
updateUserId: request.user.sub, updateUserId: request.user.sub,
updateFullName: request.user.name, updateFullName: request.user.name,
}), })
); );
await this.assignCompetencyRepository.save(competencise, { data: request }); await this.assignCompetencyRepository.save(competencise, { data: request });
setLogDataDiff(request, { before, after: competencise }); setLogDataDiff(request, { before, after: competencise });
@ -185,7 +208,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name, createdFullName: request.user.name,
updateUserId: request.user.sub, updateUserId: request.user.sub,
updateFullName: request.user.name, updateFullName: request.user.name,
}), })
); );
await this.assignCompetencyGroupRepository.save(competencyGroups, { await this.assignCompetencyGroupRepository.save(competencyGroups, {
data: request, data: request,
@ -201,7 +224,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name, createdFullName: request.user.name,
updateUserId: request.user.sub, updateUserId: request.user.sub,
updateFullName: request.user.name, updateFullName: request.user.name,
}), })
); );
await this.assignOutputRepository.save(outputs, { data: request }); await this.assignOutputRepository.save(outputs, { data: request });
setLogDataDiff(request, { before, after: outputs }); setLogDataDiff(request, { before, after: outputs });
@ -216,7 +239,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name, createdFullName: request.user.name,
updateUserId: request.user.sub, updateUserId: request.user.sub,
updateFullName: request.user.name, updateFullName: request.user.name,
}), })
); );
await this.assignDirectorRepository.save(directors, { data: request }); await this.assignDirectorRepository.save(directors, { data: request });
setLogDataDiff(request, { before, after: directors }); setLogDataDiff(request, { before, after: directors });
@ -234,7 +257,7 @@ export class AssignController extends Controller {
async EditAssign( async EditAssign(
@Query() assign_id: string, @Query() assign_id: string,
@Request() request: RequestWithUser, @Request() request: RequestWithUser,
@Body() requestBody: CreateAssign, @Body() requestBody: CreateAssign
) { ) {
await new permission().PermissionUpdate(request, "SYS_PROBATION"); await new permission().PermissionUpdate(request, "SYS_PROBATION");
@ -268,15 +291,17 @@ export class AssignController extends Controller {
}; };
await this.assignJobRepository.delete({ assign_id }); await this.assignJobRepository.delete({ assign_id });
const jobs = await requestBody.assign_jobs.map((x: CreateAssignJob, index: number) => ({ const jobs = await requestBody.assign_jobs.map(
...x, (x: CreateAssignJob, index: number) => ({
id: index + 1, ...x,
assign_id: assign.id, id: index + 1,
createdUserId: request.user.sub, assign_id: assign.id,
createdFullName: request.user.name, createdUserId: request.user.sub,
updateUserId: request.user.sub, createdFullName: request.user.name,
updateFullName: request.user.name, updateUserId: request.user.sub,
})); updateFullName: request.user.name,
})
);
await this.assignJobRepository.save(jobs); await this.assignJobRepository.save(jobs);
await this.assignKnowledgeRepository.delete({ assign_id }); await this.assignKnowledgeRepository.delete({ assign_id });
@ -289,32 +314,36 @@ export class AssignController extends Controller {
createdFullName: request.user.name, createdFullName: request.user.name,
updateUserId: request.user.sub, updateUserId: request.user.sub,
updateFullName: request.user.name, updateFullName: request.user.name,
}), })
); );
await this.assignKnowledgeRepository.save(knowledges); await this.assignKnowledgeRepository.save(knowledges);
await this.assignLawRepository.delete({ assign_id }); await this.assignLawRepository.delete({ assign_id });
const laws = await requestBody.assign_law.map((x: CreateAssignLaw, index: number) => ({ const laws = await requestBody.assign_law.map(
ordering: index + 1, (x: CreateAssignLaw, index: number) => ({
law_id: x.id, ordering: index + 1,
assign_id: assign.id, law_id: x.id,
createdUserId: request.user.sub, assign_id: assign.id,
createdFullName: request.user.name, createdUserId: request.user.sub,
updateUserId: request.user.sub, createdFullName: request.user.name,
updateFullName: request.user.name, updateUserId: request.user.sub,
})); updateFullName: request.user.name,
})
);
await this.assignLawRepository.save(laws); await this.assignLawRepository.save(laws);
await this.assignSkillRepository.delete({ assign_id }); await this.assignSkillRepository.delete({ assign_id });
const skills = await requestBody.assign_skill.map((x: CreateAssignSkill, index: number) => ({ const skills = await requestBody.assign_skill.map(
skill_id: index + 1, (x: CreateAssignSkill, index: number) => ({
skill_level: x.level, skill_id: index + 1,
assign_id: assign.id, skill_level: x.level,
createdUserId: request.user.sub, assign_id: assign.id,
createdFullName: request.user.name, createdUserId: request.user.sub,
updateUserId: request.user.sub, createdFullName: request.user.name,
updateFullName: request.user.name, updateUserId: request.user.sub,
})); updateFullName: request.user.name,
})
);
await this.assignSkillRepository.save(skills); await this.assignSkillRepository.save(skills);
await this.assignCompetencyRepository.delete({ assign_id }); await this.assignCompetencyRepository.delete({ assign_id });
@ -329,7 +358,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name, createdFullName: request.user.name,
updateUserId: request.user.sub, updateUserId: request.user.sub,
updateFullName: request.user.name, updateFullName: request.user.name,
}), })
); );
await this.assignCompetencyRepository.save(competencise); await this.assignCompetencyRepository.save(competencise);
@ -345,7 +374,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name, createdFullName: request.user.name,
updateUserId: request.user.sub, updateUserId: request.user.sub,
updateFullName: request.user.name, updateFullName: request.user.name,
}), })
); );
await this.assignCompetencyGroupRepository.save(competencyGroups); await this.assignCompetencyGroupRepository.save(competencyGroups);
@ -359,7 +388,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name, createdFullName: request.user.name,
updateUserId: request.user.sub, updateUserId: request.user.sub,
updateFullName: request.user.name, updateFullName: request.user.name,
}), })
); );
await this.assignOutputRepository.save(outputs); await this.assignOutputRepository.save(outputs);
@ -374,7 +403,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name, createdFullName: request.user.name,
updateUserId: request.user.sub, updateUserId: request.user.sub,
updateFullName: request.user.name, updateFullName: request.user.name,
}), })
); );
await this.assignDirectorRepository.save(directors); await this.assignDirectorRepository.save(directors);
@ -453,9 +482,17 @@ export class AssignController extends Controller {
* *
*/ */
@Get("assign-list") @Get("assign-list")
async ListPersonal(@Request() request: RequestWithUser, @Query() personal_id: string) { async ListPersonal(
let _workflow = await new permission().Workflow(request, personal_id, "SYS_PROBATION"); @Request() request: RequestWithUser,
if (_workflow == false) await new permission().PermissionGet(request, "SYS_PROBATION"); @Query() personal_id: string
) {
let _workflow = await new permission().Workflow(
request,
personal_id,
"SYS_PROBATION"
);
if (_workflow == false)
await new permission().PermissionGet(request, "SYS_PROBATION");
const lists = await this.assignRepository.find({ const lists = await this.assignRepository.find({
select: ["id", "round_no", "date_start", "date_finish"], select: ["id", "round_no", "date_start", "date_finish"],
where: { personal_id }, where: { personal_id },
@ -483,10 +520,14 @@ export class AssignController extends Controller {
} }
} }
const commanderData = await (director.find((x) => x.role == "commander") ?? null); const commanderData = await (director.find(
(x) => x.role == "commander"
) ?? null);
const commander = commanderData ? commanderData.fullname : null; const commander = commanderData ? commanderData.fullname : null;
const chairmanData = await (director.find((x) => x.role == "chairman") ?? null); const chairmanData = await (director.find(
(x) => x.role == "chairman"
) ?? null);
const chairman = chairmanData ? chairmanData.fullname : null; const chairman = chairmanData ? chairmanData.fullname : null;
await result.push({ await result.push({
@ -495,7 +536,7 @@ export class AssignController extends Controller {
commander: commander, commander: commander,
chairman: chairman, chairman: chairman,
}); });
}), })
); );
return new HttpSuccess(result); return new HttpSuccess(result);
@ -508,7 +549,10 @@ export class AssignController extends Controller {
* *
*/ */
@Get("assign-user-list") @Get("assign-user-list")
async ListPersonalUser(@Request() request: RequestWithUser, @Query() personal_id: string) { async ListPersonalUser(
@Request() request: RequestWithUser,
@Query() personal_id: string
) {
const lists = await this.assignRepository.find({ const lists = await this.assignRepository.find({
select: ["id", "round_no", "date_start", "date_finish"], select: ["id", "round_no", "date_start", "date_finish"],
where: { personal_id }, where: { personal_id },
@ -536,10 +580,14 @@ export class AssignController extends Controller {
} }
} }
const commanderData = await (director.find((x) => x.role == "commander") ?? null); const commanderData = await (director.find(
(x) => x.role == "commander"
) ?? null);
const commander = commanderData ? commanderData.fullname : null; const commander = commanderData ? commanderData.fullname : null;
const chairmanData = await (director.find((x) => x.role == "chairman") ?? null); const chairmanData = await (director.find(
(x) => x.role == "chairman"
) ?? null);
const chairman = chairmanData ? chairmanData.fullname : null; const chairman = chairmanData ? chairmanData.fullname : null;
await result.push({ await result.push({
@ -548,7 +596,7 @@ export class AssignController extends Controller {
commander: commander, commander: commander,
chairman: chairman, chairman: chairman,
}); });
}), })
); );
return new HttpSuccess(result); return new HttpSuccess(result);
@ -564,10 +612,15 @@ export class AssignController extends Controller {
async GetAssign( async GetAssign(
@Query() assign_id: string, @Query() assign_id: string,
@Query() isReport: boolean = false, @Query() isReport: boolean = false,
@Request() request: RequestWithUser, @Request() request: RequestWithUser
) { ) {
let _workflow = await new permission().Workflow(request, assign_id, "SYS_PROBATION"); let _workflow = await new permission().Workflow(
if (_workflow == false) await new permission().PermissionGet(request, "SYS_PROBATION"); request,
assign_id,
"SYS_PROBATION"
);
if (_workflow == false)
await new permission().PermissionGet(request, "SYS_PROBATION");
const assign = await this.assignRepository.findOne({ const assign = await this.assignRepository.findOne({
select: [ select: [
@ -621,9 +674,11 @@ export class AssignController extends Controller {
name: `${profileData.prefixName}${profileData.firstName} ${profileData.lastName}`, name: `${profileData.prefixName}${profileData.firstName} ${profileData.lastName}`,
Position: profileData.positionName, Position: profileData.positionName,
Department: splitOcAmount > 2 ? splitOc[splitOcAmount - 3] : "-", Department: splitOcAmount > 2 ? splitOc[splitOcAmount - 3] : "-",
OrganizationOrganization: splitOcAmount > 1 ? splitOc[splitOcAmount - 2] : "-", OrganizationOrganization:
splitOcAmount > 1 ? splitOc[splitOcAmount - 2] : "-",
Oc: profileData.orgRootName, Oc: profileData.orgRootName,
PositionAndLevel: profileData.positionName + profileData.positionLevelName, PositionAndLevel:
profileData.positionName + profileData.positionLevelName,
}; };
const jobs = await this.assignJobRepository.find({ const jobs = await this.assignJobRepository.find({
@ -676,7 +731,7 @@ export class AssignController extends Controller {
description: description, description: description,
status_select: x.status_select, status_select: x.status_select,
}; };
}), })
); );
const skillsData = await this.assignSkillRepository.find({ const skillsData = await this.assignSkillRepository.find({
@ -703,7 +758,12 @@ export class AssignController extends Controller {
})); }));
const competencyData = await this.assignCompetencyRepository.find({ const competencyData = await this.assignCompetencyRepository.find({
select: ["competency_id", "competency_level", "competency_name", "competency_description"], select: [
"competency_id",
"competency_level",
"competency_name",
"competency_description",
],
where: { assign_id }, where: { assign_id },
order: { createdAt: "ASC" }, order: { createdAt: "ASC" },
}); });
@ -715,16 +775,18 @@ export class AssignController extends Controller {
description: x.competency_description, description: x.competency_description,
})); }));
const competencyGroupData = await this.assignCompetencyGroupRepository.find({ const competencyGroupData = await this.assignCompetencyGroupRepository.find(
select: [ {
"competency_group_id", select: [
"competency_group_level", "competency_group_id",
"competency_group_name", "competency_group_level",
"competency_group_description", "competency_group_name",
], "competency_group_description",
where: { assign_id }, ],
order: { createdAt: "ASC" }, where: { assign_id },
}); order: { createdAt: "ASC" },
}
);
const competency_groups = await competencyGroupData.map((x) => ({ const competency_groups = await competencyGroupData.map((x) => ({
id: x.competency_group_id, id: x.competency_group_id,
level: x.competency_group_level, level: x.competency_group_level,
@ -751,13 +813,16 @@ export class AssignController extends Controller {
...e, ...e,
name: e.fullname, name: e.fullname,
label: label:
e.fullname + " " + (e.position ? `(${e.position}, ${e.posType}: ${e.posLevel})` : ""), e.fullname +
" " +
(e.position ? `(${e.position}${e.posLevel})` : ""),
Position: e.position + e.posLevel, // report Position: e.position + e.posLevel, // report
}); });
} }
} }
const commanderData = await (director.find((x) => x.role == "commander") ?? null); const commanderData = await (director.find((x) => x.role == "commander") ??
null);
const commander = await (commanderData const commander = await (commanderData
? { ? {
...commanderData, ...commanderData,
@ -766,13 +831,14 @@ export class AssignController extends Controller {
commanderData.fullname + commanderData.fullname +
" " + " " +
(commanderData.position (commanderData.position
? `(${commanderData.position}, ${commanderData.posType}: ${commanderData.posLevel})` ? `(${commanderData.position}${commanderData.posLevel})`
: ""), : ""),
Position: commanderData.position + commanderData.posLevel, // report Position: commanderData.position + commanderData.posLevel, // report
} }
: null); : null);
const chairmanData = await (director.find((x) => x.role == "chairman") ?? null); const chairmanData = await (director.find((x) => x.role == "chairman") ??
null);
const chairman = await (chairmanData const chairman = await (chairmanData
? { ? {
...chairmanData, ...chairmanData,
@ -781,7 +847,7 @@ export class AssignController extends Controller {
chairmanData.fullname + chairmanData.fullname +
" " + " " +
(chairmanData.position (chairmanData.position
? `(${chairmanData.position}, ${chairmanData.posType}: ${chairmanData.posLevel})` ? `(${chairmanData.position},${chairmanData.posLevel})`
: ""), : ""),
Position: chairmanData.position + chairmanData.posLevel, // report Position: chairmanData.position + chairmanData.posLevel, // report
} }