feat: check if request data is complete
This commit is contained in:
parent
ad551bdf10
commit
37a9dd2677
1 changed files with 59 additions and 0 deletions
|
|
@ -525,6 +525,65 @@ export class TaskActionController extends Controller {
|
|||
data: { taskStatus: TaskStatus.Complete },
|
||||
}),
|
||||
]);
|
||||
|
||||
await prisma.$transaction(async (tx) => {
|
||||
const requestList = await tx.requestData.findMany({
|
||||
include: {
|
||||
requestWork: {
|
||||
include: {
|
||||
productService: {
|
||||
include: {
|
||||
product: true,
|
||||
service: true,
|
||||
work: {
|
||||
include: { productOnWork: true },
|
||||
},
|
||||
},
|
||||
},
|
||||
stepStatus: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
where: {
|
||||
requestWork: {
|
||||
some: {
|
||||
stepStatus: {
|
||||
some: {
|
||||
task: { some: { taskOrderId } },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const completed: string[] = [];
|
||||
|
||||
requestList.forEach((item) => {
|
||||
const completeCheck = item.requestWork.every((work) => {
|
||||
const stepCount =
|
||||
work.productService.work?.productOnWork.find(
|
||||
(v) => v.productId === work.productService.productId,
|
||||
)?.stepCount || 0;
|
||||
|
||||
const completeCount = work.stepStatus.filter(
|
||||
(v) => v.workStatus === RequestWorkStatus.Completed,
|
||||
).length;
|
||||
|
||||
// NOTE: step found then check if complete count equals step count
|
||||
if (stepCount === completeCount && completeCount > 0) return true;
|
||||
// NOTE: likely no step found and completed at least one
|
||||
if (stepCount === 0 && completeCount > 0) return true;
|
||||
});
|
||||
|
||||
if (completeCheck) completed.push(item.id);
|
||||
});
|
||||
|
||||
await tx.requestData.updateMany({
|
||||
where: { id: { in: completed } },
|
||||
data: { requestDataStatus: RequestDataStatus.Completed },
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue