From 238ab9dba2b0578e653656bafb9202e29d1cac6c Mon Sep 17 00:00:00 2001 From: kittapath Date: Wed, 16 Oct 2024 17:15:55 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=AA=E0=B8=A3=E0=B9=89=E0=B8=B2=E0=B8=87?= =?UTF-8?q?=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/WorkflowController.ts | 68 +++++++++++++++++++++++---- src/entities/StateOperatorUser.ts | 8 ---- src/entities/Workflow.ts | 8 ---- 3 files changed, 58 insertions(+), 26 deletions(-) diff --git a/src/controllers/WorkflowController.ts b/src/controllers/WorkflowController.ts index 5e5837aa..3a261a56 100644 --- a/src/controllers/WorkflowController.ts +++ b/src/controllers/WorkflowController.ts @@ -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"], }); diff --git a/src/entities/StateOperatorUser.ts b/src/entities/StateOperatorUser.ts index d9f2d6a8..6d5c4294 100644 --- a/src/entities/StateOperatorUser.ts +++ b/src/entities/StateOperatorUser.ts @@ -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, diff --git a/src/entities/Workflow.ts b/src/entities/Workflow.ts index 0c6090d6..e6804bf2 100644 --- a/src/entities/Workflow.ts +++ b/src/entities/Workflow.ts @@ -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",