สร้าง workflow

This commit is contained in:
kittapath 2024-10-16 17:15:55 +07:00
parent 2b9cd85532
commit 238ab9dba2
3 changed files with 58 additions and 26 deletions

View file

@ -14,6 +14,8 @@ import { StateUserComment } from "../entities/StateUserComment";
import { MetaWorkflow } from "../entities/MetaWorkflow";
import { MetaState } from "../entities/MetaState";
import { MetaStateOperator } from "../entities/MetaStateOperator";
import { PosMasterAssign } from "../entities/PosMasterAssign";
import { PosMaster } from "../entities/PosMaster";
@Route("api/v1/org/workflow")
@Tags("Workflow")
@ -29,6 +31,7 @@ export class WorkflowController extends Controller {
private metaWorkflowRepo = AppDataSource.getRepository(MetaWorkflow);
private metaStateRepo = AppDataSource.getRepository(MetaState);
private metaStateOperatorRepo = AppDataSource.getRepository(MetaStateOperator);
private posMasterRepo = AppDataSource.getRepository(PosMaster);
@Post("add-workflow")
public async checkWorkflow(
@ -66,12 +69,19 @@ export class WorkflowController extends Controller {
lastUpdatedAt: new Date(),
};
const workflow = new Workflow();
Object.assign(workflow, { ...metaWorkflow, id: undefined, ...meta });
this.workflowRepo.save(workflow);
Object.assign(workflow, {
...metaWorkflow,
id: undefined,
...meta,
...body,
system: body.sysName,
});
await this.workflowRepo.save(workflow);
const metaState = await this.metaStateRepo.find({
where: {
metaWorkflowId: metaWorkflow.id,
},
order: { order: "ASC" },
});
await Promise.all(
@ -79,15 +89,19 @@ export class WorkflowController extends Controller {
const state = new State();
Object.assign(state, { ...item, id: undefined, workflowId: workflow.id, ...meta });
await this.stateRepo.save(state);
if (state.order == 1) {
workflow.stateId = state.id;
await this.workflowRepo.save(workflow);
}
const metaStateOperator = await this.metaStateOperatorRepo.find({
where: {
metaStateId: item.id,
},
});
await Promise.all(
metaStateOperator.map(async (item) => {
metaStateOperator.map(async (item1) => {
const stateOperator = new StateOperator();
Object.assign(stateOperator, { ...item, id: undefined, stateId: state.id, ...meta });
Object.assign(stateOperator, { ...item1, id: undefined, stateId: state.id, ...meta });
await this.stateOperatorRepo.save(stateOperator);
}),
);
@ -97,12 +111,46 @@ export class WorkflowController extends Controller {
const stateOperatorUser = new StateOperatorUser();
Object.assign(stateOperatorUser, {
profileId: profile.id,
operator: "OWNER",
operator: "Owner",
order: 1,
workflowId: workflow.id,
...meta,
});
await this.stateOperatorUserRepo.save(stateOperatorUser);
const profileOfficer = await this.posMasterRepo.find({
where: {
posMasterAssigns: { assignId: body.sysName },
orgRevision: { orgRevisionIsDraft: false, orgRevisionIsCurrent: true },
},
relations: ["orgChild1"],
});
await Promise.all(
profileOfficer.map(async (item, i) => {
if (item.orgChild1 == null || item.orgChild1.isOfficer == false) {
const stateOperatorUser = new StateOperatorUser();
Object.assign(stateOperatorUser, {
profileId: profile.id,
operator: "Officer",
order: i + 2,
workflowId: workflow.id,
...meta,
});
await this.stateOperatorUserRepo.save(stateOperatorUser);
} else {
const stateOperatorUser = new StateOperatorUser();
Object.assign(stateOperatorUser, {
profileId: profile.id,
operator: "PersonnelOfficer",
order: i + 2,
workflowId: workflow.id,
...meta,
});
await this.stateOperatorUserRepo.save(stateOperatorUser);
}
}),
);
return new HttpSuccess();
}
@ -174,7 +222,7 @@ export class WorkflowController extends Controller {
const workflow = await this.workflowRepo.findOne({
where: {
refId: body.refId,
system: body.system,
sysName: body.system,
},
relations: ["stateOperatorUsers"],
});
@ -207,7 +255,7 @@ export class WorkflowController extends Controller {
where: {
workflow: {
refId: body.refId,
system: body.system,
sysName: body.system,
},
profile: {
keycloak: req.user.sub,
@ -254,7 +302,7 @@ export class WorkflowController extends Controller {
where: {
workflow: {
refId: body.refId,
system: body.system,
sysName: body.system,
},
},
order: { order: "ASC", stateUserComments: { order: "ASC" } },
@ -282,7 +330,7 @@ export class WorkflowController extends Controller {
where: {
workflow: {
refId: body.refId,
system: body.system,
sysName: body.system,
},
profile: {
keycloak: req.user.sub,
@ -295,7 +343,7 @@ export class WorkflowController extends Controller {
const workflow = await this.workflowRepo.findOne({
where: {
refId: body.refId,
system: body.system,
sysName: body.system,
},
relations: ["stateOperatorUsers"],
});

View file

@ -21,14 +21,6 @@ export class StateOperatorUser extends EntityBase {
})
order: number;
@Column({
nullable: true,
comment: "ผู้ดำเนินการ",
length: 255,
default: null,
})
refId: string;
@Column({
nullable: true,
length: 40,

View file

@ -13,14 +13,6 @@ export class Workflow extends EntityBase {
})
refId: string;
@Column({
nullable: true,
comment: "system",
length: 255,
default: null,
})
system: string;
@Column({
nullable: true,
comment: "ชื่อ flow",