fix bug ออกคำสั่งยกเลิกลาออก #2183 + api แก้ไขเปลี่ยนผู้สร้างคำสั่ง #1551
All checks were successful
Build & Deploy on Dev / build (push) Successful in 1m20s
All checks were successful
Build & Deploy on Dev / build (push) Successful in 1m20s
This commit is contained in:
parent
baa8496a69
commit
6a07841763
4 changed files with 96 additions and 16 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -131,3 +131,5 @@ dist
|
||||||
.yarn/build-state.yml
|
.yarn/build-state.yml
|
||||||
.yarn/install-state.gz
|
.yarn/install-state.gz
|
||||||
.pnp.*
|
.pnp.*
|
||||||
|
|
||||||
|
.claude
|
||||||
|
|
@ -102,6 +102,7 @@ import {
|
||||||
import { PostRetireToExprofile } from "./ExRetirementController";
|
import { PostRetireToExprofile } from "./ExRetirementController";
|
||||||
import { LeaveType } from "../entities/LeaveType";
|
import { LeaveType } from "../entities/LeaveType";
|
||||||
import { KeycloakAttributeService } from "../services/KeycloakAttributeService";
|
import { KeycloakAttributeService } from "../services/KeycloakAttributeService";
|
||||||
|
import { reOrderCommandRecivesAndDelete } from "../services/CommandService";
|
||||||
@Route("api/v1/org/command")
|
@Route("api/v1/org/command")
|
||||||
@Tags("Command")
|
@Tags("Command")
|
||||||
@Security("bearerAuth")
|
@Security("bearerAuth")
|
||||||
|
|
@ -2488,6 +2489,35 @@ export class CommandController extends Controller {
|
||||||
return new HttpSuccess();
|
return new HttpSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API แก้ไขเปลี่ยนผู้สร้างคำสั่ง
|
||||||
|
* @summary API แก้ไขเปลี่ยนผู้สร้างคำสั่ง
|
||||||
|
* @param {string} id Id คำสั่ง
|
||||||
|
*/
|
||||||
|
@Put("change-creator/{id}")
|
||||||
|
async ChangeCreator(
|
||||||
|
@Path() id: string,
|
||||||
|
@Body() req: { assignId: string; },
|
||||||
|
@Request() request: RequestWithUser,
|
||||||
|
) {
|
||||||
|
await new permission().PermissionUpdate(request, "COMMAND");
|
||||||
|
const command = await this.commandRepository.findOne({
|
||||||
|
where: { id: id }
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!command) {
|
||||||
|
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลคำสั่งนี้");
|
||||||
|
}
|
||||||
|
|
||||||
|
command.createdUserId = req.assignId;
|
||||||
|
command.lastUpdateUserId = request.user.sub;
|
||||||
|
command.lastUpdateFullName = request.user.name;
|
||||||
|
command.lastUpdatedAt = new Date();
|
||||||
|
|
||||||
|
await this.commandRepository.save(command);
|
||||||
|
return new HttpSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* API สร้างรายการ body คำสั่ง
|
* API สร้างรายการ body คำสั่ง
|
||||||
*
|
*
|
||||||
|
|
@ -3984,6 +4014,7 @@ export class CommandController extends Controller {
|
||||||
.orgRootShortName ?? "";
|
.orgRootShortName ?? "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const today = new Date().setHours(0,0,0,0);
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
body.data.map(async (item) => {
|
body.data.map(async (item) => {
|
||||||
const profile = await this.profileRepository.findOne({
|
const profile = await this.profileRepository.findOne({
|
||||||
|
|
@ -4003,17 +4034,16 @@ export class CommandController extends Controller {
|
||||||
if (code && ["C-PM-08", "C-PM-17", "C-PM-18"].includes(code)) {
|
if (code && ["C-PM-08", "C-PM-17", "C-PM-18"].includes(code)) {
|
||||||
removePostMasterAct(profile.id);
|
removePostMasterAct(profile.id);
|
||||||
}
|
}
|
||||||
//ออกคำสั่งยกเลิกลาออกต้องอัพเดทสถานะคำสั่งลาออกเป็น CANCEL
|
//ออกคำสั่งยกเลิกลาออก ลบเฉพาะคนที่ขอยกเลิกลาออก
|
||||||
else if (item.resignId && code && ["C-PM-41"].includes(code)) {
|
else if (item.resignId && code && ["C-PM-41"].includes(code)) {
|
||||||
const commandRecive = await this.commandReciveRepository.findOne({
|
const commandResign = await this.commandReciveRepository.findOne({
|
||||||
select: ["commandId"],
|
|
||||||
where: { refId: item.resignId },
|
where: { refId: item.resignId },
|
||||||
|
relations: { command: true },
|
||||||
});
|
});
|
||||||
if (commandRecive && commandRecive.commandId) {
|
const executeDate = commandResign ? new Date(commandResign.command.commandExcecuteDate).setHours(0,0,0,0) : today;
|
||||||
await this.commandRepository.update(
|
if (_command.status != "REPORTED"
|
||||||
{ id: commandRecive?.commandId },
|
&& (_command.status != "WAITING" || today < executeDate)) {
|
||||||
{ status: "CANCEL" },
|
await reOrderCommandRecivesAndDelete(commandResign!.refId);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let _commandYear = item.commandYear;
|
let _commandYear = item.commandYear;
|
||||||
|
|
@ -4386,6 +4416,7 @@ export class CommandController extends Controller {
|
||||||
.orgRootShortName ?? "";
|
.orgRootShortName ?? "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const today = new Date().setHours(0,0,0,0);
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
body.data.map(async (item) => {
|
body.data.map(async (item) => {
|
||||||
const profile = await this.profileEmployeeRepository.findOne({
|
const profile = await this.profileEmployeeRepository.findOne({
|
||||||
|
|
@ -4401,17 +4432,16 @@ export class CommandController extends Controller {
|
||||||
throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว");
|
throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว");
|
||||||
}
|
}
|
||||||
const code = _command?.commandType?.code;
|
const code = _command?.commandType?.code;
|
||||||
//ออกคำสั่งยกเลิกลาออกต้องอัพเดทสถานะคำสั่งลาออกเป็น CANCEL
|
//ออกคำสั่งยกเลิกลาออก ลบเฉพาะคนที่ขอยกเลิกลาออก
|
||||||
if (item.resignId && code && ["C-PM-42"].includes(code)) {
|
if (item.resignId && code && ["C-PM-42"].includes(code)) {
|
||||||
const commandRecive = await this.commandReciveRepository.findOne({
|
const commandResign = await this.commandReciveRepository.findOne({
|
||||||
select: ["commandId"],
|
|
||||||
where: { refId: item.resignId },
|
where: { refId: item.resignId },
|
||||||
|
relations: { command: true },
|
||||||
});
|
});
|
||||||
if (commandRecive && commandRecive.commandId) {
|
const executeDate = commandResign ? new Date(commandResign.command.commandExcecuteDate).setHours(0,0,0,0) : today;
|
||||||
await this.commandRepository.update(
|
if (_command.status != "REPORTED"
|
||||||
{ id: commandRecive?.commandId },
|
&& (_command.status !== "WAITING" || today < executeDate)) {
|
||||||
{ status: "CANCEL" },
|
await reOrderCommandRecivesAndDelete(commandResign!.id);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let _commandYear = item.commandYear;
|
let _commandYear = item.commandYear;
|
||||||
|
|
|
||||||
|
|
@ -9200,6 +9200,7 @@ export class ProfileController extends Controller {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: item.id,
|
id: item.id,
|
||||||
|
keycloak: item.keycloak,
|
||||||
prefix: item.prefix,
|
prefix: item.prefix,
|
||||||
rank: item.rank,
|
rank: item.rank,
|
||||||
firstName: item.firstName,
|
firstName: item.firstName,
|
||||||
|
|
|
||||||
47
src/services/CommandService.ts
Normal file
47
src/services/CommandService.ts
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
import { AppDataSource } from "../database/data-source";
|
||||||
|
import { CommandRecive } from "../entities/CommandRecive";
|
||||||
|
import { Command } from "../entities/Command";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* เรียงลำดับผู้ได้รับคำสั่งใหม่หลังจากลบรายการ และอัพเดทสถานะคำสั่งถ้าไม่มีผู้ได้รับคำสั่งเหลือ
|
||||||
|
* @param refId refId ของผู้ได้รับคำสั่ง
|
||||||
|
* @param code ประเภทคำสั่ง
|
||||||
|
* @returns Promise<void>
|
||||||
|
*/
|
||||||
|
export async function reOrderCommandRecivesAndDelete(
|
||||||
|
refId: string
|
||||||
|
): Promise<void> {
|
||||||
|
const commandReciveRepo = AppDataSource.getRepository(CommandRecive);
|
||||||
|
const commandRepo = AppDataSource.getRepository(Command);
|
||||||
|
|
||||||
|
// ค้นหาข้อมูลผู้ได้รับคำสั่งตาม refId
|
||||||
|
const commandRecive = await commandReciveRepo.findOne({
|
||||||
|
where: { refId: refId },
|
||||||
|
relations: { command: true},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (commandRecive == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const commandId = commandRecive.commandId;
|
||||||
|
// ลบตาม refId
|
||||||
|
await commandReciveRepo.delete(commandRecive.id);
|
||||||
|
|
||||||
|
const commandReciveList = await commandReciveRepo.find({
|
||||||
|
where: { commandId: commandId },
|
||||||
|
order: { order: "ASC" },
|
||||||
|
});
|
||||||
|
// ลำดับผู้ได้รับคำสั่งใหม่
|
||||||
|
if (commandReciveList.length > 0) {
|
||||||
|
await Promise.all(
|
||||||
|
commandReciveList.map(async (p, i) => {
|
||||||
|
p.order = i + 1;
|
||||||
|
await commandReciveRepo.save(p);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// ถ้าไม่มีผู้ได้รับคำสั่งเหลือเลย ให้ยกเลิกคำสั่ง
|
||||||
|
await commandRepo.update({ id: commandId }, { status: "CANCEL" });
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue