@dssp/supervision 0.0.34 → 0.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/pages/building-inspection/building-inspection-detail-checklist.ts +9 -5
- package/client/pages/building-inspection/building-inspection-list.ts +10 -9
- package/client/pages/building-inspection/component/building-inspection-detail-header.ts +11 -5
- package/client/pages/checklist/attachment-list-popup.ts +22 -4
- package/client/pages/checklist/checklist-view.ts +34 -23
- package/client/pages/checklist/comment-list-popup.ts +12 -3
- package/dist-client/pages/building-inspection/building-inspection-detail-checklist.js +9 -5
- package/dist-client/pages/building-inspection/building-inspection-detail-checklist.js.map +1 -1
- package/dist-client/pages/building-inspection/building-inspection-list.js +10 -9
- package/dist-client/pages/building-inspection/building-inspection-list.js.map +1 -1
- package/dist-client/pages/building-inspection/component/building-inspection-detail-header.js +11 -5
- package/dist-client/pages/building-inspection/component/building-inspection-detail-header.js.map +1 -1
- package/dist-client/pages/checklist/attachment-list-popup.js +24 -4
- package/dist-client/pages/checklist/attachment-list-popup.js.map +1 -1
- package/dist-client/pages/checklist/checklist-view.js +32 -18
- package/dist-client/pages/checklist/checklist-view.js.map +1 -1
- package/dist-client/pages/checklist/comment-list-popup copy.d.ts +2 -0
- package/dist-client/pages/checklist/comment-list-popup copy.js +344 -0
- package/dist-client/pages/checklist/comment-list-popup copy.js.map +1 -0
- package/dist-client/pages/checklist/comment-list-popup.js +16 -3
- package/dist-client/pages/checklist/comment-list-popup.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/service/building-inspection/building-inspection-mutation.js +9 -1
- package/dist-server/service/building-inspection/building-inspection-mutation.js.map +1 -1
- package/dist-server/service/checklist-item/checklist-item-query.d.ts +2 -0
- package/dist-server/service/checklist-item/checklist-item-query.js +15 -2
- package/dist-server/service/checklist-item/checklist-item-query.js.map +1 -1
- package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.js +19 -1
- package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.js.map +1 -1
- package/dist-server/service/index.d.ts +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/server/service/building-inspection/building-inspection-mutation.ts +13 -1
- package/server/service/checklist-item/checklist-item-query.ts +13 -6
- package/server/service/checklist-item-comment/checklist-item-comment-mutation.ts +21 -1
|
@@ -161,6 +161,10 @@ let BuildingInspectionMutation = class BuildingInspectionMutation {
|
|
|
161
161
|
if (!patch.id)
|
|
162
162
|
throw new Error('검측 아이디가 없습니다.');
|
|
163
163
|
const buildingInspection = await buildingInspectionRepo.findOneBy({ id: patch.id });
|
|
164
|
+
// 완료 상태인 검측데이터면 삭제 못함
|
|
165
|
+
if (buildingInspection.status === building_inspection_2.BuildingInspectionStatus.PASS) {
|
|
166
|
+
throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.');
|
|
167
|
+
}
|
|
164
168
|
const result = await buildingInspectionRepo.save(Object.assign(Object.assign(Object.assign({}, buildingInspection), patch), { updater: user }));
|
|
165
169
|
return result;
|
|
166
170
|
}
|
|
@@ -169,8 +173,12 @@ let BuildingInspectionMutation = class BuildingInspectionMutation {
|
|
|
169
173
|
const buildingInspectionRepository = tx.getRepository(building_inspection_1.BuildingInspection);
|
|
170
174
|
const checklistRepository = tx.getRepository(checklist_1.Checklist);
|
|
171
175
|
const checklistItemRepository = tx.getRepository(checklist_item_1.ChecklistItem);
|
|
172
|
-
// 검측 데이터 제거
|
|
173
176
|
const buildingInspections = await buildingInspectionRepository.createQueryBuilder('bi').whereInIds(ids).getMany();
|
|
177
|
+
// 완료 상태인 검측데이터가 한개라도 있으면 삭제 못함
|
|
178
|
+
if (buildingInspections.filter(bi => bi.status === building_inspection_2.BuildingInspectionStatus.PASS).length > 0) {
|
|
179
|
+
throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.');
|
|
180
|
+
}
|
|
181
|
+
// 검측 데이터 제거
|
|
174
182
|
await buildingInspectionRepository.softDelete({
|
|
175
183
|
id: (0, typeorm_1.In)(ids)
|
|
176
184
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"building-inspection-mutation.js","sourceRoot":"","sources":["../../../server/service/building-inspection/building-inspection-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { BuildingInspection } from './building-inspection'\nimport {\n NewBuildingInspection,\n UpdateBuildingInspectionDrawingMarker,\n UpdateBuildingInspectionSubmitType\n} from './building-inspection-type'\nimport { BuildingInspectionStatus } from './building-inspection'\nimport { Checklist } from '../checklist/checklist'\nimport { ChecklistItem } from '../checklist-item/checklist-item'\nimport { getRepository } from '@things-factory/shell'\nimport { BuildingLevel } from '@dssp/building-complex'\n\n@Resolver(BuildingInspection)\nexport class BuildingInspectionMutation {\n @Directive('@transaction')\n @Mutation(returns => BuildingInspection, { description: 'To create Building Inspection information' })\n async createBuildingInspection(\n @Arg('patch') patch: NewBuildingInspection,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspection> {\n const { user, tx } = context.state\n const { buildingLevelId, checklist, checklistItem } = patch\n const buildingInspectionRepository = tx.getRepository(BuildingInspection)\n const checklistRepository = tx.getRepository(Checklist)\n const checklistItemRepository = tx.getRepository(ChecklistItem)\n\n // 1. 벨리데이션\n if (!buildingLevelId) throw new Error('층 아이디가 없습니다.')\n if (!checklist.name) throw new Error('체크리스트 이름이 없습니다.')\n if (!checklist.constructionType) throw new Error('공종 타입이 없습니다.')\n if (!checklist.constructionDetailType) throw new Error('상세 공종 타입이 없습니다.')\n if (!checklist.location) throw new Error('위치가 없습니다.')\n if (!checklist.inspectionDrawingType) throw new Error('검측 도면 타입이 없습니다.')\n if (checklist.inspectionParts.length === 0) throw new Error('검측 부위가 없습니다.')\n if (checklistItem.length === 0) throw new Error('체크리스트 아이템이 없습니다.')\n\n // 2. checklist 저장\n const documentNo = await this.getRecentDocumentNoByBuildingLevelId(buildingLevelId)\n const savedChecklist = await checklistRepository.save({\n ...checklist,\n documentNo,\n creator: user,\n updater: user\n })\n\n // 3. checklistItem 저장\n const checklistItems = checklistItem.map((item, idx) => ({\n name: item.name,\n mainType: item.mainType,\n detailType: item.detailType,\n inspctionCriteria: item.inspctionCriteria,\n sequence: idx,\n checklist: savedChecklist,\n creator: user,\n updater: user\n }))\n await checklistItemRepository.save(checklistItems)\n\n // 4. buildingInspection 저장\n const result = await buildingInspectionRepository.save({\n status: BuildingInspectionStatus.WAIT,\n buildingLevel: { id: buildingLevelId },\n checklist: savedChecklist,\n creator: user,\n updater: user\n })\n\n return result\n }\n\n // 검측 상태 변경 & 체크리스트 갱신\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To create Building Inspection And Checklist information' })\n async updateBuildingInspectionChecklist(\n @Arg('buildingInspection') buildingInspection: UpdateBuildingInspectionSubmitType,\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { user, tx } = context.state\n const { id: buildingInspectionId, checklist, checklistItem } = buildingInspection\n const buildingInspectionRepo = tx.getRepository(BuildingInspection)\n const checklistRepo = tx.getRepository(Checklist)\n const checklistItemRepo = tx.getRepository(ChecklistItem)\n const oldBuildingInspection = await buildingInspectionRepo.findOneBy({ id: buildingInspectionId })\n const status = oldBuildingInspection.status\n const isConstructor: boolean =\n status == BuildingInspectionStatus.WAIT ||\n status == BuildingInspectionStatus.OVERALL_WAIT ||\n status == BuildingInspectionStatus.FAIL\n let inspectionStatus = null\n\n // 1. 벨리데이션\n if (!buildingInspectionId) throw new Error('검측 아이디가 없습니다.')\n if (!status) throw new Error('검측 상태가 없습니다.')\n if (status == BuildingInspectionStatus.PASS) throw new Error('검측 상태가 수정할 수 있는 상태가 아닙니다.')\n\n if (isConstructor) {\n // 시공자 타입별 밸리데이션\n if (checklistItem.length !== checklistItem.filter(v => v.constructionConfirmStatus).length) {\n throw new Error('아이템을 모두 체크해야 합니다.')\n }\n if (status == BuildingInspectionStatus.OVERALL_WAIT && !checklist.overallConstructorSignature) {\n throw new Error('총괄 시공책임자 사인이 없습니다.')\n }\n if (status == BuildingInspectionStatus.WAIT && !checklist.taskConstructorSignature) {\n throw new Error('공종별 시공관리자 사인이 없습니다.')\n }\n\n // 시공자 상태 데이터\n const isPassed = checklistItem.length === checklistItem.filter(v => v.constructionConfirmStatus === 'T').length\n\n if (!isPassed) {\n // 1. 검측이 불햡격 = 상태는 불합격으로, 시공자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.FAIL\n checklist.overallConstructorSignature = null\n checklist.taskConstructorSignature = null\n } else if (isPassed && (status === BuildingInspectionStatus.WAIT || status === BuildingInspectionStatus.FAIL)) {\n // 2. 검측이 합격이면서 공종 시공자 스탭 = 상태는 총괄 시공자 스탭으로\n inspectionStatus = BuildingInspectionStatus.OVERALL_WAIT\n } else if (isPassed && status === BuildingInspectionStatus.OVERALL_WAIT) {\n // 3. 검측이 합격이면서 총괄 시공자 스탭 = 상태는 공종 감리자 스탭으로, 감리자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.REQUEST\n checklist.overallSupervisorySignature = null\n checklist.taskSupervisorySignature = null\n }\n } else {\n // 감리자 타입별 밸리데이션\n if (checklistItem.length !== checklistItem.filter(v => v.supervisoryConfirmStatus).length) {\n throw new Error('아이템을 모두 체크해야 합니다.')\n }\n if (status == BuildingInspectionStatus.OVERALL_REQUEST && !checklist.overallSupervisorySignature) {\n throw new Error('총괄 감리책임자 사인이 없습니다.')\n }\n if (status == BuildingInspectionStatus.REQUEST && !checklist.taskSupervisorySignature) {\n throw new Error('공종별 감리 책임자 사인이 없습니다.')\n }\n\n // 감리자 상태 데이터\n const isPassed = checklistItem.length === checklistItem.filter(v => v.supervisoryConfirmStatus === 'T').length\n if (!isPassed) {\n // 1. 검측이 불햡격 = 상태는 불합격으로, 시공자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.FAIL\n checklist.overallConstructorSignature = null\n checklist.taskConstructorSignature = null\n } else if (isPassed && status === BuildingInspectionStatus.REQUEST) {\n // 2. 검측이 합격이면서 공종 감리자 스탭 = 상태는 총괄 감리자 스탭으로\n inspectionStatus = BuildingInspectionStatus.OVERALL_REQUEST\n } else if (isPassed && status === BuildingInspectionStatus.OVERALL_REQUEST) {\n // 3. 검측이 합격이면서 총괄 감리자 스탭 = 상태는 합격으로\n inspectionStatus = BuildingInspectionStatus.PASS\n }\n }\n\n // 2. buildingInspection 저장\n await buildingInspectionRepo.save({\n ...oldBuildingInspection,\n status: inspectionStatus,\n updater: user\n })\n\n // 3. checklist 저장\n const oldChecklist = await checklistRepo.findOneBy({ id: checklist.id })\n const inspectionDateField = isConstructor ? 'constructionInspectionDate' : 'supervisorInspectionDate'\n await checklistRepo.save({\n ...oldChecklist,\n [inspectionDateField]: new Date(),\n overallConstructorSignature: checklist.overallConstructorSignature,\n taskConstructorSignature: checklist.taskConstructorSignature,\n overallSupervisorySignature: checklist.overallSupervisorySignature,\n taskSupervisorySignature: checklist.taskSupervisorySignature,\n updater: user\n })\n\n // 4. checklistItem 저장\n for (let item of checklistItem) {\n const confirmStatusField = isConstructor ? 'constructionConfirmStatus' : 'supervisoryConfirmStatus'\n await checklistItemRepo.update(item.id, {\n [confirmStatusField]: item[confirmStatusField],\n updater: user\n })\n }\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => BuildingInspection, { description: 'To update Building Inspection information' })\n async updateBuildingInspection(\n @Arg('patch') patch: UpdateBuildingInspectionDrawingMarker,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspection> {\n const { user, tx } = context.state\n const buildingInspectionRepo = tx.getRepository(BuildingInspection)\n\n // 벨리데이션\n if (!patch.id) throw new Error('검측 아이디가 없습니다.')\n\n const buildingInspection = await buildingInspectionRepo.findOneBy({ id: patch.id })\n const result = await buildingInspectionRepo.save({\n ...buildingInspection,\n ...patch,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple Checklists' })\n async deleteBuildingInspections(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { tx } = context.state\n const buildingInspectionRepository = tx.getRepository(BuildingInspection)\n const checklistRepository = tx.getRepository(Checklist)\n const checklistItemRepository = tx.getRepository(ChecklistItem)\n\n // 검측 데이터 제거\n const buildingInspections = await buildingInspectionRepository.createQueryBuilder('bi').whereInIds(ids).getMany()\n await buildingInspectionRepository.softDelete({\n id: In(ids)\n })\n\n // 검측 데이터의 체크 리스트 제거\n const checklistIds = buildingInspections.map(bi => bi.checklistId)\n await checklistRepository.softDelete({\n id: In(checklistIds)\n })\n\n // 검측 데이터의 체크 리스트 아이템 제거\n await checklistItemRepository\n .createQueryBuilder()\n .softDelete()\n .where('checklist_id IN (:...checklistIds)', { checklistIds })\n .execute()\n\n return true\n }\n\n async getRecentDocumentNoByBuildingLevelId(buildingLevelId: string): Promise<string> {\n const buildingLevel = await getRepository(BuildingLevel).findOne({\n where: { id: buildingLevelId },\n relations: ['building']\n })\n\n const buildingName = buildingLevel.building.name.match(/\\d+/g)?.join('')?.padStart(4, '0') || '0000'\n const floorName = buildingLevel.floor.toString().padStart(3, '0')\n const latestChecklist = await getRepository(Checklist)\n .createQueryBuilder('c')\n .where('c.document_no LIKE :pattern', { pattern: `${buildingName}-${floorName}-%` })\n .orderBy('c.created_at', 'DESC')\n .getOne()\n\n let documentNo = '000001'\n if (latestChecklist) {\n const lastNo = latestChecklist.documentNo.split('-')[2]\n documentNo = (Number(lastNo) + 1).toString().padStart(6, '0')\n }\n\n return `${buildingName}-${floorName}-${documentNo}`\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"building-inspection-mutation.js","sourceRoot":"","sources":["../../../server/service/building-inspection/building-inspection-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { BuildingInspection } from './building-inspection'\nimport {\n NewBuildingInspection,\n UpdateBuildingInspectionDrawingMarker,\n UpdateBuildingInspectionSubmitType\n} from './building-inspection-type'\nimport { BuildingInspectionStatus } from './building-inspection'\nimport { Checklist } from '../checklist/checklist'\nimport { ChecklistItem } from '../checklist-item/checklist-item'\nimport { getRepository } from '@things-factory/shell'\nimport { BuildingLevel } from '@dssp/building-complex'\n\n@Resolver(BuildingInspection)\nexport class BuildingInspectionMutation {\n @Directive('@transaction')\n @Mutation(returns => BuildingInspection, { description: 'To create Building Inspection information' })\n async createBuildingInspection(\n @Arg('patch') patch: NewBuildingInspection,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspection> {\n const { user, tx } = context.state\n const { buildingLevelId, checklist, checklistItem } = patch\n const buildingInspectionRepository = tx.getRepository(BuildingInspection)\n const checklistRepository = tx.getRepository(Checklist)\n const checklistItemRepository = tx.getRepository(ChecklistItem)\n\n // 1. 벨리데이션\n if (!buildingLevelId) throw new Error('층 아이디가 없습니다.')\n if (!checklist.name) throw new Error('체크리스트 이름이 없습니다.')\n if (!checklist.constructionType) throw new Error('공종 타입이 없습니다.')\n if (!checklist.constructionDetailType) throw new Error('상세 공종 타입이 없습니다.')\n if (!checklist.location) throw new Error('위치가 없습니다.')\n if (!checklist.inspectionDrawingType) throw new Error('검측 도면 타입이 없습니다.')\n if (checklist.inspectionParts.length === 0) throw new Error('검측 부위가 없습니다.')\n if (checklistItem.length === 0) throw new Error('체크리스트 아이템이 없습니다.')\n\n // 2. checklist 저장\n const documentNo = await this.getRecentDocumentNoByBuildingLevelId(buildingLevelId)\n const savedChecklist = await checklistRepository.save({\n ...checklist,\n documentNo,\n creator: user,\n updater: user\n })\n\n // 3. checklistItem 저장\n const checklistItems = checklistItem.map((item, idx) => ({\n name: item.name,\n mainType: item.mainType,\n detailType: item.detailType,\n inspctionCriteria: item.inspctionCriteria,\n sequence: idx,\n checklist: savedChecklist,\n creator: user,\n updater: user\n }))\n await checklistItemRepository.save(checklistItems)\n\n // 4. buildingInspection 저장\n const result = await buildingInspectionRepository.save({\n status: BuildingInspectionStatus.WAIT,\n buildingLevel: { id: buildingLevelId },\n checklist: savedChecklist,\n creator: user,\n updater: user\n })\n\n return result\n }\n\n // 검측 상태 변경 & 체크리스트 갱신\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To create Building Inspection And Checklist information' })\n async updateBuildingInspectionChecklist(\n @Arg('buildingInspection') buildingInspection: UpdateBuildingInspectionSubmitType,\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { user, tx } = context.state\n const { id: buildingInspectionId, checklist, checklistItem } = buildingInspection\n const buildingInspectionRepo = tx.getRepository(BuildingInspection)\n const checklistRepo = tx.getRepository(Checklist)\n const checklistItemRepo = tx.getRepository(ChecklistItem)\n const oldBuildingInspection = await buildingInspectionRepo.findOneBy({ id: buildingInspectionId })\n const status = oldBuildingInspection.status\n const isConstructor: boolean =\n status == BuildingInspectionStatus.WAIT ||\n status == BuildingInspectionStatus.OVERALL_WAIT ||\n status == BuildingInspectionStatus.FAIL\n let inspectionStatus = null\n\n // 1. 벨리데이션\n if (!buildingInspectionId) throw new Error('검측 아이디가 없습니다.')\n if (!status) throw new Error('검측 상태가 없습니다.')\n if (status == BuildingInspectionStatus.PASS) throw new Error('검측 상태가 수정할 수 있는 상태가 아닙니다.')\n\n if (isConstructor) {\n // 시공자 타입별 밸리데이션\n if (checklistItem.length !== checklistItem.filter(v => v.constructionConfirmStatus).length) {\n throw new Error('아이템을 모두 체크해야 합니다.')\n }\n if (status == BuildingInspectionStatus.OVERALL_WAIT && !checklist.overallConstructorSignature) {\n throw new Error('총괄 시공책임자 사인이 없습니다.')\n }\n if (status == BuildingInspectionStatus.WAIT && !checklist.taskConstructorSignature) {\n throw new Error('공종별 시공관리자 사인이 없습니다.')\n }\n\n // 시공자 상태 데이터\n const isPassed = checklistItem.length === checklistItem.filter(v => v.constructionConfirmStatus === 'T').length\n\n if (!isPassed) {\n // 1. 검측이 불햡격 = 상태는 불합격으로, 시공자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.FAIL\n checklist.overallConstructorSignature = null\n checklist.taskConstructorSignature = null\n } else if (isPassed && (status === BuildingInspectionStatus.WAIT || status === BuildingInspectionStatus.FAIL)) {\n // 2. 검측이 합격이면서 공종 시공자 스탭 = 상태는 총괄 시공자 스탭으로\n inspectionStatus = BuildingInspectionStatus.OVERALL_WAIT\n } else if (isPassed && status === BuildingInspectionStatus.OVERALL_WAIT) {\n // 3. 검측이 합격이면서 총괄 시공자 스탭 = 상태는 공종 감리자 스탭으로, 감리자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.REQUEST\n checklist.overallSupervisorySignature = null\n checklist.taskSupervisorySignature = null\n }\n } else {\n // 감리자 타입별 밸리데이션\n if (checklistItem.length !== checklistItem.filter(v => v.supervisoryConfirmStatus).length) {\n throw new Error('아이템을 모두 체크해야 합니다.')\n }\n if (status == BuildingInspectionStatus.OVERALL_REQUEST && !checklist.overallSupervisorySignature) {\n throw new Error('총괄 감리책임자 사인이 없습니다.')\n }\n if (status == BuildingInspectionStatus.REQUEST && !checklist.taskSupervisorySignature) {\n throw new Error('공종별 감리 책임자 사인이 없습니다.')\n }\n\n // 감리자 상태 데이터\n const isPassed = checklistItem.length === checklistItem.filter(v => v.supervisoryConfirmStatus === 'T').length\n if (!isPassed) {\n // 1. 검측이 불햡격 = 상태는 불합격으로, 시공자 싸인은 모두 초기화\n inspectionStatus = BuildingInspectionStatus.FAIL\n checklist.overallConstructorSignature = null\n checklist.taskConstructorSignature = null\n } else if (isPassed && status === BuildingInspectionStatus.REQUEST) {\n // 2. 검측이 합격이면서 공종 감리자 스탭 = 상태는 총괄 감리자 스탭으로\n inspectionStatus = BuildingInspectionStatus.OVERALL_REQUEST\n } else if (isPassed && status === BuildingInspectionStatus.OVERALL_REQUEST) {\n // 3. 검측이 합격이면서 총괄 감리자 스탭 = 상태는 합격으로\n inspectionStatus = BuildingInspectionStatus.PASS\n }\n }\n\n // 2. buildingInspection 저장\n await buildingInspectionRepo.save({\n ...oldBuildingInspection,\n status: inspectionStatus,\n updater: user\n })\n\n // 3. checklist 저장\n const oldChecklist = await checklistRepo.findOneBy({ id: checklist.id })\n const inspectionDateField = isConstructor ? 'constructionInspectionDate' : 'supervisorInspectionDate'\n await checklistRepo.save({\n ...oldChecklist,\n [inspectionDateField]: new Date(),\n overallConstructorSignature: checklist.overallConstructorSignature,\n taskConstructorSignature: checklist.taskConstructorSignature,\n overallSupervisorySignature: checklist.overallSupervisorySignature,\n taskSupervisorySignature: checklist.taskSupervisorySignature,\n updater: user\n })\n\n // 4. checklistItem 저장\n for (let item of checklistItem) {\n const confirmStatusField = isConstructor ? 'constructionConfirmStatus' : 'supervisoryConfirmStatus'\n await checklistItemRepo.update(item.id, {\n [confirmStatusField]: item[confirmStatusField],\n updater: user\n })\n }\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => BuildingInspection, { description: 'To update Building Inspection information' })\n async updateBuildingInspection(\n @Arg('patch') patch: UpdateBuildingInspectionDrawingMarker,\n @Ctx() context: ResolverContext\n ): Promise<BuildingInspection> {\n const { user, tx } = context.state\n const buildingInspectionRepo = tx.getRepository(BuildingInspection)\n\n // 벨리데이션\n if (!patch.id) throw new Error('검측 아이디가 없습니다.')\n\n const buildingInspection = await buildingInspectionRepo.findOneBy({ id: patch.id })\n\n // 완료 상태인 검측데이터면 삭제 못함\n if (buildingInspection.status === BuildingInspectionStatus.PASS) {\n throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.')\n }\n\n const result = await buildingInspectionRepo.save({\n ...buildingInspection,\n ...patch,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple Checklists' })\n async deleteBuildingInspections(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { tx } = context.state\n const buildingInspectionRepository = tx.getRepository(BuildingInspection)\n const checklistRepository = tx.getRepository(Checklist)\n const checklistItemRepository = tx.getRepository(ChecklistItem)\n\n const buildingInspections = await buildingInspectionRepository.createQueryBuilder('bi').whereInIds(ids).getMany()\n\n // 완료 상태인 검측데이터가 한개라도 있으면 삭제 못함\n if (buildingInspections.filter(bi => bi.status === BuildingInspectionStatus.PASS).length > 0) {\n throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.')\n }\n\n // 검측 데이터 제거\n await buildingInspectionRepository.softDelete({\n id: In(ids)\n })\n\n // 검측 데이터의 체크 리스트 제거\n const checklistIds = buildingInspections.map(bi => bi.checklistId)\n await checklistRepository.softDelete({\n id: In(checklistIds)\n })\n\n // 검측 데이터의 체크 리스트 아이템 제거\n await checklistItemRepository\n .createQueryBuilder()\n .softDelete()\n .where('checklist_id IN (:...checklistIds)', { checklistIds })\n .execute()\n\n return true\n }\n\n async getRecentDocumentNoByBuildingLevelId(buildingLevelId: string): Promise<string> {\n const buildingLevel = await getRepository(BuildingLevel).findOne({\n where: { id: buildingLevelId },\n relations: ['building']\n })\n\n const buildingName = buildingLevel.building.name.match(/\\d+/g)?.join('')?.padStart(4, '0') || '0000'\n const floorName = buildingLevel.floor.toString().padStart(3, '0')\n const latestChecklist = await getRepository(Checklist)\n .createQueryBuilder('c')\n .where('c.document_no LIKE :pattern', { pattern: `${buildingName}-${floorName}-%` })\n .orderBy('c.created_at', 'DESC')\n .getOne()\n\n let documentNo = '000001'\n if (latestChecklist) {\n const lastNo = latestChecklist.documentNo.split('-')[2]\n documentNo = (Number(lastNo) + 1).toString().padStart(6, '0')\n }\n\n return `${buildingName}-${floorName}-${documentNo}`\n }\n}\n"]}
|
|
@@ -4,9 +4,11 @@ import { User } from '@things-factory/auth-base';
|
|
|
4
4
|
import { ChecklistItem } from './checklist-item';
|
|
5
5
|
import { ChecklistItemList } from './checklist-item-type';
|
|
6
6
|
import { ChecklistItemComment } from '../checklist-item-comment/checklist-item-comment';
|
|
7
|
+
import { BuildingInspection } from '../building-inspection/building-inspection';
|
|
7
8
|
export declare class ChecklistItemQuery {
|
|
8
9
|
checklistItem(id: string, context: ResolverContext): Promise<ChecklistItem>;
|
|
9
10
|
checklistItems(params: ListParam, context: ResolverContext): Promise<ChecklistItemList>;
|
|
11
|
+
inspectionByChecklistItemId(checklistItemId: string): Promise<BuildingInspection>;
|
|
10
12
|
checklistItemComments(checklistItem: ChecklistItem): Promise<ChecklistItemComment[]>;
|
|
11
13
|
checklistItemCommentCount(checklistItem: ChecklistItem): Promise<number>;
|
|
12
14
|
checklistItemAttachments(checklistItem: ChecklistItem): Promise<Attachment[]>;
|
|
@@ -9,15 +9,14 @@ const auth_base_1 = require("@things-factory/auth-base");
|
|
|
9
9
|
const checklist_item_1 = require("./checklist-item");
|
|
10
10
|
const checklist_item_type_1 = require("./checklist-item-type");
|
|
11
11
|
const checklist_item_comment_1 = require("../checklist-item-comment/checklist-item-comment");
|
|
12
|
+
const building_inspection_1 = require("../building-inspection/building-inspection");
|
|
12
13
|
let ChecklistItemQuery = class ChecklistItemQuery {
|
|
13
14
|
async checklistItem(id, context) {
|
|
14
|
-
const { domain } = context.state;
|
|
15
15
|
return await (0, shell_1.getRepository)(checklist_item_1.ChecklistItem).findOne({
|
|
16
16
|
where: { id }
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
async checklistItems(params, context) {
|
|
20
|
-
const { domain } = context.state;
|
|
21
20
|
const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
|
|
22
21
|
params,
|
|
23
22
|
repository: await (0, shell_1.getRepository)(checklist_item_1.ChecklistItem),
|
|
@@ -26,6 +25,14 @@ let ChecklistItemQuery = class ChecklistItemQuery {
|
|
|
26
25
|
const [items, total] = await queryBuilder.getManyAndCount();
|
|
27
26
|
return { items, total };
|
|
28
27
|
}
|
|
28
|
+
async inspectionByChecklistItemId(checklistItemId) {
|
|
29
|
+
return (0, shell_1.getRepository)(building_inspection_1.BuildingInspection)
|
|
30
|
+
.createQueryBuilder('bi')
|
|
31
|
+
.innerJoin('checklists', 'c', 'bi.checklist_id = c.id')
|
|
32
|
+
.innerJoin('checklist_items', 'ci', 'c.id = ci.checklist_id')
|
|
33
|
+
.where('ci.id = :checklistItemId', { checklistItemId })
|
|
34
|
+
.getOne();
|
|
35
|
+
}
|
|
29
36
|
async checklistItemComments(checklistItem) {
|
|
30
37
|
return await (0, shell_1.getRepository)(checklist_item_comment_1.ChecklistItemComment).findBy({ checklistItem: { id: checklistItem.id } });
|
|
31
38
|
}
|
|
@@ -74,6 +81,12 @@ tslib_1.__decorate([
|
|
|
74
81
|
tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
|
|
75
82
|
tslib_1.__metadata("design:returntype", Promise)
|
|
76
83
|
], ChecklistItemQuery.prototype, "checklistItems", null);
|
|
84
|
+
tslib_1.__decorate([
|
|
85
|
+
(0, type_graphql_1.Query)(returns => building_inspection_1.BuildingInspection, { description: 'BuildingInspection By ChecklistItemId' }),
|
|
86
|
+
tslib_1.__metadata("design:type", Function),
|
|
87
|
+
tslib_1.__metadata("design:paramtypes", [String]),
|
|
88
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
89
|
+
], ChecklistItemQuery.prototype, "inspectionByChecklistItemId", null);
|
|
77
90
|
tslib_1.__decorate([
|
|
78
91
|
(0, type_graphql_1.FieldResolver)(type => [checklist_item_comment_1.ChecklistItemComment]),
|
|
79
92
|
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checklist-item-query.js","sourceRoot":"","sources":["../../../server/service/checklist-item/checklist-item-query.ts"],"names":[],"mappings":";;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"checklist-item-query.js","sourceRoot":"","sources":["../../../server/service/checklist-item/checklist-item-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx } from 'type-graphql'\nimport { Attachment } from '@things-factory/attachment-base'\nimport { getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { ChecklistItem } from './checklist-item'\nimport { ChecklistItemList } from './checklist-item-type'\nimport { ChecklistItemComment } from '../checklist-item-comment/checklist-item-comment'\nimport { BuildingInspection } from '../building-inspection/building-inspection'\n\n@Resolver(ChecklistItem)\nexport class ChecklistItemQuery {\n @Query(returns => ChecklistItem!, { nullable: true, description: 'To fetch a ChecklistItem' })\n async checklistItem(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<ChecklistItem> {\n return await getRepository(ChecklistItem).findOne({\n where: { id }\n })\n }\n\n @Query(returns => ChecklistItemList, { description: 'To fetch multiple ChecklistItems' })\n async checklistItems(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ChecklistItemList> {\n const queryBuilder = getQueryBuilderFromListParams({\n params,\n repository: await getRepository(ChecklistItem),\n searchables: ['name', 'description']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => BuildingInspection, { description: 'BuildingInspection By ChecklistItemId' })\n async inspectionByChecklistItemId(checklistItemId: string): Promise<BuildingInspection> {\n return getRepository(BuildingInspection)\n .createQueryBuilder('bi')\n .innerJoin('checklists', 'c', 'bi.checklist_id = c.id')\n .innerJoin('checklist_items', 'ci', 'c.id = ci.checklist_id')\n .where('ci.id = :checklistItemId', { checklistItemId })\n .getOne()\n }\n\n @FieldResolver(type => [ChecklistItemComment])\n async checklistItemComments(@Root() checklistItem: ChecklistItem): Promise<ChecklistItemComment[]> {\n return await getRepository(ChecklistItemComment).findBy({ checklistItem: { id: checklistItem.id } })\n }\n\n @FieldResolver(type => Number)\n async checklistItemCommentCount(@Root() checklistItem: ChecklistItem): Promise<number> {\n return await getRepository(ChecklistItemComment).countBy({ checklistItem: { id: checklistItem.id } })\n }\n\n @FieldResolver(type => [Attachment])\n async checklistItemAttachments(@Root() checklistItem: ChecklistItem): Promise<Attachment[]> {\n return await getRepository(Attachment).find({\n where: {\n refType: ChecklistItem.name,\n refBy: checklistItem.id\n },\n order: {\n createdAt: 'DESC'\n }\n })\n }\n\n @FieldResolver(type => Number)\n async checklistItemAttachmentCount(@Root() checklistItem: ChecklistItem): Promise<number> {\n return await getRepository(Attachment).count({\n where: {\n refType: ChecklistItem.name,\n refBy: checklistItem.id\n }\n })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() checklistItem: ChecklistItem): Promise<User> {\n return await getRepository(User).findOneBy({ id: checklistItem.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() checklistItem: ChecklistItem): Promise<User> {\n return await getRepository(User).findOneBy({ id: checklistItem.creatorId })\n }\n}\n"]}
|
|
@@ -6,10 +6,18 @@ const type_graphql_1 = require("type-graphql");
|
|
|
6
6
|
const shell_1 = require("@things-factory/shell");
|
|
7
7
|
const checklist_item_comment_1 = require("./checklist-item-comment");
|
|
8
8
|
const checklist_item_comment_type_1 = require("./checklist-item-comment-type");
|
|
9
|
+
const building_inspection_1 = require("../building-inspection/building-inspection");
|
|
10
|
+
const checklist_item_query_1 = require("../checklist-item/checklist-item-query");
|
|
9
11
|
let ChecklistItemCommentMutation = class ChecklistItemCommentMutation {
|
|
10
12
|
async createChecklistItemComment(checklistItemComment, context) {
|
|
11
13
|
const { user, tx } = context.state;
|
|
12
14
|
const { comment, checklistItemId } = checklistItemComment;
|
|
15
|
+
// 합격 상태인지 체크
|
|
16
|
+
const checklistItemQuery = new checklist_item_query_1.ChecklistItemQuery();
|
|
17
|
+
const inspection = await checklistItemQuery.inspectionByChecklistItemId(checklistItemId);
|
|
18
|
+
if (inspection.status === building_inspection_1.BuildingInspectionStatus.PASS) {
|
|
19
|
+
throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.');
|
|
20
|
+
}
|
|
13
21
|
const result = await (0, shell_1.getRepository)(checklist_item_comment_1.ChecklistItemComment, tx).save({
|
|
14
22
|
comment,
|
|
15
23
|
checklistItem: { id: checklistItemId },
|
|
@@ -30,7 +38,17 @@ let ChecklistItemCommentMutation = class ChecklistItemCommentMutation {
|
|
|
30
38
|
}
|
|
31
39
|
async deleteChecklistItemComment(id, context) {
|
|
32
40
|
const { tx } = context.state;
|
|
33
|
-
|
|
41
|
+
const repository = (0, shell_1.getRepository)(checklist_item_comment_1.ChecklistItemComment, tx);
|
|
42
|
+
const checklistItemComment = await repository.findOne({
|
|
43
|
+
where: { id }
|
|
44
|
+
});
|
|
45
|
+
// 합격 상태인지 체크
|
|
46
|
+
const checklistItemQuery = new checklist_item_query_1.ChecklistItemQuery();
|
|
47
|
+
const inspection = await checklistItemQuery.inspectionByChecklistItemId(checklistItemComment.checklistItemId);
|
|
48
|
+
if (inspection.status === building_inspection_1.BuildingInspectionStatus.PASS) {
|
|
49
|
+
throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.');
|
|
50
|
+
}
|
|
51
|
+
await repository.softDelete({ id });
|
|
34
52
|
return true;
|
|
35
53
|
}
|
|
36
54
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checklist-item-comment-mutation.js","sourceRoot":"","sources":["../../../server/service/checklist-item-comment/checklist-item-comment-mutation.ts"],"names":[],"mappings":";;;;AAAA,+CAAsE;AACtE,iDAAqD;AACrD,qEAA+D;AAC/D,+EAAkG;
|
|
1
|
+
{"version":3,"file":"checklist-item-comment-mutation.js","sourceRoot":"","sources":["../../../server/service/checklist-item-comment/checklist-item-comment-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { getRepository } from '@things-factory/shell'\nimport { ChecklistItemComment } from './checklist-item-comment'\nimport { NewChecklistItemComment, ChecklistItemCommentPatch } from './checklist-item-comment-type'\nimport { BuildingInspectionStatus } from '../building-inspection/building-inspection'\nimport { ChecklistItemQuery } from '../checklist-item/checklist-item-query'\n\n@Resolver(ChecklistItemComment)\nexport class ChecklistItemCommentMutation {\n @Directive('@transaction')\n @Mutation(returns => ChecklistItemComment, { description: 'To create new ChecklistItemComment' })\n async createChecklistItemComment(\n @Arg('checklistItemComment') checklistItemComment: NewChecklistItemComment,\n @Ctx() context: ResolverContext\n ): Promise<ChecklistItemComment> {\n const { user, tx } = context.state\n const { comment, checklistItemId } = checklistItemComment\n\n // 합격 상태인지 체크\n const checklistItemQuery = new ChecklistItemQuery()\n const inspection = await checklistItemQuery.inspectionByChecklistItemId(checklistItemId)\n if (inspection.status === BuildingInspectionStatus.PASS) {\n throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.')\n }\n\n const result = await getRepository(ChecklistItemComment, tx).save({\n comment,\n checklistItem: { id: checklistItemId },\n createdAt: new Date(),\n creator: user,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => ChecklistItemComment, { description: 'To modify ChecklistItemComment information' })\n async updateChecklistItemComment(\n @Arg('id') id: string,\n @Arg('patch') patch: ChecklistItemCommentPatch,\n @Ctx() context: ResolverContext\n ): Promise<ChecklistItemComment> {\n const { user, tx } = context.state\n\n const repository = getRepository(ChecklistItemComment, tx)\n const checklistItemComment = await repository.findOne({\n where: { id }\n })\n\n const result = await repository.save({\n ...checklistItemComment,\n ...patch,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete ChecklistItemComment' })\n async deleteChecklistItemComment(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { tx } = context.state\n const repository = getRepository(ChecklistItemComment, tx)\n const checklistItemComment = await repository.findOne({\n where: { id }\n })\n\n // 합격 상태인지 체크\n const checklistItemQuery = new ChecklistItemQuery()\n const inspection = await checklistItemQuery.inspectionByChecklistItemId(checklistItemComment.checklistItemId)\n if (inspection.status === BuildingInspectionStatus.PASS) {\n throw new Error('완료 상태인 검측정보를 변경할 수 없습니다.')\n }\n\n await repository.softDelete({ id })\n\n return true\n }\n}\n"]}
|
|
@@ -9,7 +9,7 @@ export * from './checklist-item-comment/checklist-item-comment';
|
|
|
9
9
|
export * from './checklist-template/checklist-template';
|
|
10
10
|
export * from './checklist-template-item/checklist-template-item';
|
|
11
11
|
export * from './building-inspection/building-inspection';
|
|
12
|
-
export declare const entities: (typeof import("./
|
|
12
|
+
export declare const entities: (typeof import("./checklist-item-comment/checklist-item-comment").ChecklistItemComment | typeof import("./action-plan/action-plan").ActionPlan | typeof import("./issue/issue").Issue | typeof import("./project-report/project-report").ProjectReport | typeof import("./supervisor/supervisor").Supervisor | typeof import("./checklist/checklist").Checklist | typeof import("./checklist/checklist-history").ChecklistHistory | typeof import("./checklist-item/checklist-item").ChecklistItem | typeof import("./checklist-type/checklist-type").ChecklistType | typeof import("./checklist-template-item/checklist-template-item").ChecklistTemplateItem | typeof import("./checklist-template/checklist-template").ChecklistTemplate | typeof import("./building-inspection/building-inspection").BuildingInspection | typeof import("./building-inspection/building-inspection-history").BuildingInspectionHistory)[];
|
|
13
13
|
export declare const subscribers: any[];
|
|
14
14
|
export declare const schema: {
|
|
15
15
|
resolverClasses: typeof import("./checklist-item/checklist-item-mutation").ChecklistItemMutation[];
|