Merge branch 'develop'

This commit is contained in:
kittapath 2024-12-24 00:46:06 +07:00
commit 5658438ca5
6 changed files with 104 additions and 28 deletions

View file

@ -59,6 +59,7 @@ import { RequestWithUser } from "../middlewares/user";
import { DevelopmentRisk, UpdateDevelopmentRisk } from "../entities/DevelopmentRisk";
import { DevelopmentOther, UpdateDevelopmentOther } from "../entities/DevelopmentOther";
import permission from "../interfaces/permission";
import { Brackets } from "typeorm";
@Route("api/v1/development/main")
@Tags("Development")
@ -1941,9 +1942,21 @@ export class DevelopmentController extends Controller {
.andWhere(status != undefined ? "development.status LIKE :status" : "1=1", {
status: `%${status}%`,
})
.andWhere(keyword != undefined ? "development.projectName LIKE :keyword" : "1=1", {
keyword: `%${keyword}%`,
})
.andWhere(
keyword != undefined
? new Brackets ((qb) => {
qb.where("development.projectName LIKE :keyword")
.orWhere("development.root LIKE :keyword")
.orWhere("development.child1 LIKE :keyword")
.orWhere("development.child2 LIKE :keyword")
.orWhere("development.child3 LIKE :keyword")
.orWhere("development.child4 LIKE :keyword");
})
: "1=1",
{
keyword: `%${keyword}%`,
},
)
.select([
"development.id",
"development.projectName",
@ -2593,6 +2606,58 @@ export class DevelopmentController extends Controller {
return new HttpSuccess(getOrg);
}
@Get("registry/{type}/{developmentId}")
async developmentDetail(
@Path() developmentId: string,
@Path() type: string,
@Request() request: RequestWithUser
) {
const getDevelopment = await this.developmentRepository.findOne({
where: { id: developmentId },
relations: [
"developmentProjectTypes",
"developmentProjectTechniquePlanneds",
"developmentProjectTechniqueActuals",
"developmentAddresss",
],
});
if (!getDevelopment)
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้");
if (type.trim().toLocaleUpperCase() == "OFFICER") {
let _workflow = await new permission().Workflow(request, developmentId, "SYS_REGISTRY_OFFICER");
if (_workflow == false) await new permission().PermissionGet(request, "SYS_REGISTRY_OFFICER");
} else if (type.trim().toLocaleUpperCase() == "USER") {
} else {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่สามารถเข้าถึงข้อมูลนี้ได้");
}
let _getDevelopment: any = {
id: getDevelopment.id,
evaluationId: null,
target: null,
summary: null,
point: null,
name: getDevelopment.projectName,
achievement10: "มีผลการพัฒนาและมีการดำเนินการตามเป้าหมายการนำไปพัฒนางาน",
achievement5: "มีผลการพัฒนาแต่ยังไม่ได้ดำเนินการตามเป้าหมายการนำไปพัฒนางาน",
achievement0: "ไม่ได้ดำเนินการพัฒนา",
isDevelopment70: getDevelopment.isReasonActual70,
isDevelopment20: getDevelopment.isReasonActual20,
isDevelopment10: getDevelopment.isReasonActual10,
reasonDevelopment70: getDevelopment.reasonActual70,
reasonDevelopment20: getDevelopment.reasonActual20,
reasonDevelopment10: getDevelopment.reasonActual10,
selectType: "PROJECT",
selectTypeYear: getDevelopment.year,
selectTypeId: null,
developmentProjects : getDevelopment.developmentProjectTechniqueActuals
.map((x) => x.name)
.sort(),
};
return new HttpSuccess(_getDevelopment);
}
/**
* API upload User
*

View file

@ -360,10 +360,18 @@ export class DevelopmentEmployeeHistoryController extends Controller {
relations: [
"development",
"development.developmentOthers",
"development.developmentOthers.province",
"employeePosLevel",
"employeePosType",
],
where: { id: id, type: type },
order: {
development:{
developmentOthers: {
createdAt: "ASC"
}
}
}
});
if (!getDevelopment) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประวัติการฝึกอบรม/ดูงานนี้");
@ -408,6 +416,7 @@ export class DevelopmentEmployeeHistoryController extends Controller {
? getDevelopment.development.developmentOthers.map((dev) => ({
topicAcademic: dev.topicAcademic,
addressAcademic: dev.addressAcademic,
province: dev.province.name
}))
: [],
};

View file

@ -27,6 +27,7 @@ import { PosLevel } from "../entities/PosLevel";
import { RequestWithUser } from "../middlewares/user";
import { setLogDataDiff } from "../interfaces/utils";
import permission from "../interfaces/permission";
import { Province } from "../entities/Province";
@Route("api/v1/development/history/officer")
@Tags("DevelopmentOfficerHistory")
@ -321,9 +322,10 @@ export class DevelopmentOfficerHistoryController extends Controller {
const formattedData = development.map((item) => ({
id: item.id,
citizenId: item.citizenId,
fullName: item.prefix == null && item.firstName == null && item.lastName == null
? ""
: `${item?.prefix}${item?.firstName} ${item?.lastName}`,
fullName:
item.prefix == null && item.firstName == null && item.lastName == null
? ""
: `${item?.prefix}${item?.firstName} ${item?.lastName}`,
position: item.position,
year: item.development.year,
root: item.development.root, //test
@ -350,8 +352,21 @@ export class DevelopmentOfficerHistoryController extends Controller {
await new permission().PermissionGet(request, "SYS_DEV_HISTORY_OFFICER");
const type = "OFFICER";
const getDevelopment = await this.developmentHistoryRepository.findOne({
relations: ["development", "development.developmentOthers","posLevel", "posType"],
relations: [
"development",
"development.developmentOthers",
"development.developmentOthers.province",
"posLevel",
"posType",
],
where: { id: id, type: type },
order: {
development: {
developmentOthers: {
createdAt: "ASC",
},
},
},
});
if (!getDevelopment) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประวัติการฝึกอบรม/ดูงานนี้");
@ -389,12 +404,13 @@ export class DevelopmentOfficerHistoryController extends Controller {
getDevelopment.development != null ? getDevelopment.development.dateStudyStart : null,
dateStudyEnd:
getDevelopment.development != null ? getDevelopment.development.dateStudyEnd : null,
academic: getDevelopment.development?.developmentOthers
? getDevelopment.development.developmentOthers.map(dev => ({
academic: getDevelopment.development?.developmentOthers
? getDevelopment.development.developmentOthers.map((dev) => ({
topicAcademic: dev.topicAcademic,
addressAcademic: dev.addressAcademic
}))
: []
addressAcademic: dev.addressAcademic,
province: dev.province.name,
}))
: [],
};
return new HttpSuccess(formattedData);

View file

@ -38,7 +38,7 @@ export class DevelopmentOther extends EntityBase {
development: Development;
@ManyToOne(() => Province, (province: Province) => province.developmentOthers)
@JoinColumn({ name: "developmentId" })
@JoinColumn({ name: "provinceActualId" })
province: Province;
}

View file

@ -60,7 +60,7 @@ async function logMiddleware(req: Request, res: Response, next: NextFunction) {
logType: res.statusCode >= 500 ? "error" : res.statusCode >= 400 ? "warning" : "info",
ip: req.ip,
rootId: rootId?.orgRootId ?? null,
systemName: "evaluation",
systemName: "development",
startTimeStamp: timestamp,
endTimeStamp: new Date().toISOString(),
processTime: performance.now() - start,

View file

@ -1,14 +0,0 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class UpdateDevorderAddRelationProvince1734583427091 implements MigrationInterface {
name = 'UpdateDevorderAddRelationProvince1734583427091'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`developmentOther\` ADD CONSTRAINT \`FK_d5dfdb7ca0d11c0cdf3b3a55e6f\` FOREIGN KEY (\`developmentId\`) REFERENCES \`province\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`developmentOther\` DROP FOREIGN KEY \`FK_d5dfdb7ca0d11c0cdf3b3a55e6f\``);
}
}