feat: add restart task within same order

This commit is contained in:
Methapon2001 2025-01-08 13:09:59 +07:00
parent 2536394fb2
commit 27d80de0ec

View file

@ -452,6 +452,7 @@ export class TaskActionController extends Controller {
return await prisma.$transaction(async (tx) => {
const promises = body.map(async (v) => {
const record = await tx.task.findFirst({
include: { requestWorkStep: true },
where: {
step: v.step,
requestWorkId: v.requestWorkId,
@ -459,6 +460,16 @@ export class TaskActionController extends Controller {
},
});
if (!record) throw notFoundError("Task List");
if (v.taskStatus === TaskStatus.Restart && record.requestWorkStep.responsibleUserId) {
await tx.userTask.updateMany({
where: {
taskOrderId: record.taskOrderId,
userId: record.requestWorkStep.responsibleUserId,
},
data: { userTaskStatus: UserTaskStatus.Restart },
});
}
return await tx.task.update({
where: { id: record.id },
data: {
@ -520,13 +531,7 @@ export class TaskActionController extends Controller {
@Post("complete")
@Security("keycloak")
async completeTaskOrder(
@Request() req: RequestWithUser,
@Path() taskOrderId: string,
@Query() submitUserId?: string,
) {
submitUserId = submitUserId ?? req.user.sub;
async completeTaskOrder(@Request() req: RequestWithUser, @Path() taskOrderId: string) {
const record = await prisma.taskOrder.findFirst({ where: { id: taskOrderId } });
if (!record) throw notFoundError("Task Order");
@ -540,16 +545,25 @@ export class TaskActionController extends Controller {
tx.requestWorkStepStatus.updateMany({
where: {
task: {
some: { taskOrderId, taskStatus: TaskStatus.Redo },
some: {
taskOrderId,
taskStatus: { notIn: [TaskStatus.Canceled, TaskStatus.Success] },
},
},
},
data: { workStatus: RequestWorkStatus.Ready },
}),
tx.task.updateMany({
where: {
taskOrderId: taskOrderId,
taskStatus: TaskStatus.Restart,
},
data: { taskStatus: TaskStatus.Redo },
}),
tx.task.updateMany({
where: {
taskOrderId: taskOrderId,
taskStatus: TaskStatus.Validate,
requestWorkStep: { responsibleUserId: submitUserId },
},
data: { taskStatus: TaskStatus.Complete },
}),
@ -712,13 +726,16 @@ export class UserTaskController extends Controller {
userTask: userTaskStatus
? {
some:
userTaskStatus !== UserTaskStatus.Pending
userTaskStatus !== UserTaskStatus.Pending && userTaskStatus !== UserTaskStatus.Restart
? {
userTaskStatus,
userId: req.user.sub,
}
: undefined,
none: userTaskStatus === UserTaskStatus.Pending ? { userId: req.user.sub } : undefined,
none:
userTaskStatus === UserTaskStatus.Pending || userTaskStatus === UserTaskStatus.Restart
? { userId: req.user.sub }
: undefined,
}
: undefined,
OR: queryOrNot(query, [