199 lines
12 KiB
Plaintext
199 lines
12 KiB
Plaintext
// 0. 데이터베이스 초기화
|
|
MATCH (n) DETACH DELETE n;
|
|
|
|
// 1. 노드 생성
|
|
|
|
// JobType 노드
|
|
CREATE (:JobType {type_id: 'JT01', name: '터널 입구 굴착'});
|
|
CREATE (:JobType {type_id: 'JT02', name: '숏크리트 타설'});
|
|
CREATE (:JobType {type_id: 'JT03', name: '강지보 설치'});
|
|
CREATE (:JobType {type_id: 'JT04', name: '방수 및 배수시설 설치'});
|
|
CREATE (:JobType {type_id: 'JT05', name: '철근 조립'});
|
|
CREATE (:JobType {type_id: 'JT06', name: '내부 라이닝 콘크리트 타설'});
|
|
CREATE (:JobType {type_id: 'JT07', name: '조명 및 환기시설 설치'});
|
|
CREATE (:JobType {type_id: 'JT08', name: '안전시설물 설치'});
|
|
CREATE (:JobType {type_id: 'JT09', name: '포장 및 차선 도색'});
|
|
CREATE (:JobType {type_id: 'JT10', name: 'TBM 준비'});
|
|
CREATE (:JobType {type_id: 'JT11', name: 'TBM 굴진'});
|
|
CREATE (:JobType {type_id: 'JT12', name: '세그먼트 조립'});
|
|
CREATE (:JobType {type_id: 'JT13', name: '그라우팅'});
|
|
CREATE (:JobType {type_id: 'JT14', name: 'TBM 해체 및 반출'});
|
|
CREATE (:JobType {type_id: 'JT15', name: '전기/통신 케이블 설치'});
|
|
CREATE (:JobType {type_id: 'JT16', name: 'CCTV 및 VMS 설치'});
|
|
CREATE (:JobType {type_id: 'JT17', name: '소방시설 설치'});
|
|
CREATE (:JobType {type_id: 'JT18', name: '최종 점검'});
|
|
CREATE (:JobType {type_id: 'JT19', name: '개통 준비'});
|
|
|
|
// Job 노드
|
|
CREATE (:Job {id: '1', name: '터널 입구 굴착', duration: 10, cost: 150});
|
|
CREATE (:Job {id: '2', name: '1차 숏크리트 타설', duration: 5, cost: 80});
|
|
CREATE (:Job {id: '3', name: '강지보 설치', duration: 7, cost: 120});
|
|
CREATE (:Job {id: '4', name: '2차 숏크리트 타설', duration: 5, cost: 80});
|
|
CREATE (:Job {id: '5', name: '방수 및 배수시설 설치', duration: 8, cost: 100});
|
|
CREATE (:Job {id: '6', name: '철근 조립', duration: 6, cost: 90});
|
|
CREATE (:Job {id: '7', name: '내부 라이닝 콘크리트 타설', duration: 12, cost: 200});
|
|
CREATE (:Job {id: '8', name: '조명 및 환기시설 설치', duration: 9, cost: 110});
|
|
CREATE (:Job {id: '9', name: '안전시설물 설치', duration: 4, cost: 60});
|
|
CREATE (:Job {id: '10', name: '포장 및 차선 도색', duration: 7, cost: 95});
|
|
CREATE (:Job {id: '11', name: 'TBM 준비', duration: 15, cost: 500});
|
|
CREATE (:Job {id: '12', name: 'TBM 굴진', duration: 30, cost: 1200});
|
|
CREATE (:Job {id: '13', name: '세그먼트 조립', duration: 25, cost: 800});
|
|
CREATE (:Job {id: '14', name: '그라우팅', duration: 10, cost: 150});
|
|
CREATE (:Job {id: '15', name: 'TBM 해체 및 반출', duration: 12, cost: 300});
|
|
CREATE (:Job {id: '16', name: '전기/통신 케이블 설치', duration: 8, cost: 130});
|
|
CREATE (:Job {id: '17', name: 'CCTV 및 VMS 설치', duration: 5, cost: 70});
|
|
CREATE (:Job {id: '18', name: '소방시설 설치', duration: 6, cost: 85});
|
|
CREATE (:Job {id: '19', name: '최종 점검', duration: 3, cost: 50});
|
|
CREATE (:Job {id: '20', name: '개통 준비', duration: 2, cost: 30});
|
|
|
|
// ObjectType 노드
|
|
CREATE (:ObjectType {type_id: 'OT01', name: '굴착기'});
|
|
CREATE (:ObjectType {type_id: 'OT02', name: '숏크리트 펌프'});
|
|
CREATE (:ObjectType {type_id: 'OT03', name: '강지보재'});
|
|
CREATE (:ObjectType {type_id: 'OT04', name: '방수시트'});
|
|
CREATE (:ObjectType {type_id: 'OT05', name: '콘크리트 믹서'});
|
|
CREATE (:ObjectType {type_id: 'OT06', name: '철근'});
|
|
CREATE (:ObjectType {type_id: 'OT07', name: '조명등'});
|
|
CREATE (:ObjectType {type_id: 'OT08', name: '환풍기'});
|
|
CREATE (:ObjectType {type_id: 'OT09', name: 'TBM'});
|
|
CREATE (:ObjectType {type_id: 'OT10', name: '세그먼트'});
|
|
CREATE (:ObjectType {type_id: 'OT11', name: '그라우트 믹서'});
|
|
CREATE (:ObjectType {type_id: 'OT12', name: '케이블'});
|
|
CREATE (:ObjectType {type_id: 'OT13', name: 'CCTV'});
|
|
CREATE (:ObjectType {type_id: 'OT14', name: '소화기'});
|
|
CREATE (:ObjectType {type_id: 'OT15', name: '차선도색기'});
|
|
CREATE (:ObjectType {type_id: 'OT16', name: '숏크리트'});
|
|
|
|
// Object 노드
|
|
CREATE (:Object {id: 'OBJ01', name: '굴착기-A01'});
|
|
CREATE (:Object {id: 'OBJ02', name: '숏크리트 펌프-A'});
|
|
CREATE (:Object {id: 'OBJ03', name: '강지보재-L100'});
|
|
CREATE (:Object {id: 'OBJ04', name: '방수시트-S20'});
|
|
CREATE (:Object {id: 'OBJ05', name: '콘크리트 믹서-T1'});
|
|
CREATE (:Object {id: 'OBJ06', name: '철근-D16'});
|
|
CREATE (:Object {id: 'OBJ07', name: '조명등-LED-1'});
|
|
CREATE (:Object {id: 'OBJ08', name: '환풍기-F1'});
|
|
CREATE (:Object {id: 'OBJ09', name: 'TBM-Shield-1'});
|
|
CREATE (:Object {id: 'OBJ10', name: '세그먼트-A타입'});
|
|
CREATE (:Object {id: 'OBJ11', name: '그라우트 믹서-G1'});
|
|
CREATE (:Object {id: 'OBJ12', name: '전원 케이블-HV-1'});
|
|
CREATE (:Object {id: 'OBJ13', name: 'CCTV-001'});
|
|
CREATE (:Object {id: 'OBJ14', name: '소화기-P1'});
|
|
CREATE (:Object {id: 'OBJ15', name: '차선도색기-Y1'});
|
|
CREATE (:Object {id: 'OBJ16', name: '숏크리트-Batch1'});
|
|
CREATE (:Object {id: 'OBJ17', name: '숏크리트-Batch2'});
|
|
|
|
// Status 노드
|
|
CREATE (:Status {status_id: 'CS_APP', name: 'APPROVED'});
|
|
CREATE (:Status {status_id: 'CS_CON', name: 'CONFIRMED'});
|
|
CREATE (:Status {status_id: 'CS_PLN', name: 'PLANNING'});
|
|
CREATE (:Status {status_id: 'PS_EXE', name: 'EXECUTING'});
|
|
CREATE (:Status {status_id: 'PS_PLN', name: 'PLANNING'});
|
|
CREATE (:Status {status_id: 'PM_PAID', name: 'PAID'});
|
|
CREATE (:Status {status_id: 'PM_APL', name: 'APPLIED'});
|
|
CREATE (:Status {status_id: 'PM_NON', name: 'NONE'});
|
|
CREATE (:Status {status_id: 'QS_APP', name: 'APPROVED'});
|
|
CREATE (:Status {status_id: 'QS_CON', name: 'CONFIRMED'});
|
|
CREATE (:Status {status_id: 'QS_PLN', name: 'PLANNING'});
|
|
CREATE (:Status {status_id: 'SS_APP', name: 'APPROVED'});
|
|
CREATE (:Status {status_id: 'SS_CON', name: 'CONFIRMED'});
|
|
CREATE (:Status {status_id: 'SS_PLN', name: 'PLANNING'});
|
|
|
|
// Activity 노드
|
|
CREATE (:Activity {id: 'ACT01', name: '굴착 작업', description: '터널 입구 지반 굴착'});
|
|
CREATE (:Activity {id: 'ACT02', name: '숏크리트 타설 작업', description: '굴착면에 숏크리트 타설하여 안정화'});
|
|
CREATE (:Activity {id: 'ACT03', name: '강지보 설치 작업', description: '강재 지보를 설치하여 터널 구조 강화'});
|
|
CREATE (:Activity {id: 'ACT04', name: '방수/배수 작업', description: '방수시트 및 배수시설 설치'});
|
|
CREATE (:Activity {id: 'ACT05', name: '철근 조립 작업', description: '내부 라이닝을 위한 철근 조립'});
|
|
|
|
// Scenario 노드
|
|
CREATE (:Scenario {id: 'SCN01', name: '기본 시나리오', description: '가장 기본적인 순서의 작업 흐름'});
|
|
CREATE (:Scenario {id: 'SCN02', name: 'TBM 공법 적용 시나리오', description: 'TBM 장비를 활용한 대체 작업 흐름'});
|
|
CREATE (:Scenario {id: 'SCN03', name: 'SCN02 증분 시나리오', description: 'SCN02 시나리오에서 일부 작업 순서 변경'});
|
|
|
|
// 2. 관계 생성
|
|
|
|
// Job IS_A JobType
|
|
MATCH (j:Job {id: '1'}), (jt:JobType {type_id: 'JT01'}) CREATE (j)-[:IS_A]->(jt);
|
|
MATCH (j:Job {id: '2'}), (jt:JobType {type_id: 'JT02'}) CREATE (j)-[:IS_A]->(jt);
|
|
MATCH (j:Job {id: '3'}), (jt:JobType {type_id: 'JT03'}) CREATE (j)-[:IS_A]->(jt);
|
|
MATCH (j:Job {id: '4'}), (jt:JobType {type_id: 'JT02'}) CREATE (j)-[:IS_A]->(jt);
|
|
MATCH (j:Job {id: '5'}), (jt:JobType {type_id: 'JT04'}) CREATE (j)-[:IS_A]->(jt);
|
|
|
|
// Object IS_A ObjectType
|
|
MATCH (o:Object {id: 'OBJ01'}), (ot:ObjectType {type_id: 'OT01'}) CREATE (o)-[:IS_A]->(ot);
|
|
MATCH (o:Object {id: 'OBJ02'}), (ot:ObjectType {type_id: 'OT02'}) CREATE (o)-[:IS_A]->(ot);
|
|
MATCH (o:Object {id: 'OBJ16'}), (ot:ObjectType {type_id: 'OT16'}) CREATE (o)-[:IS_A]->(ot);
|
|
MATCH (o:Object {id: 'OBJ17'}), (ot:ObjectType {type_id: 'OT16'}) CREATE (o)-[:IS_A]->(ot);
|
|
|
|
// Job PRECEDES Job
|
|
MATCH (j1:Job {id: '1'}), (j2:Job {id: '2'}) CREATE (j1)-[:PRECEDES]->(j2);
|
|
MATCH (j1:Job {id: '2'}), (j2:Job {id: '3'}) CREATE (j1)-[:PRECEDES]->(j2);
|
|
MATCH (j1:Job {id: '3'}), (j2:Job {id: '4'}) CREATE (j1)-[:PRECEDES]->(j2);
|
|
MATCH (j1:Job {id: '4'}), (j2:Job {id: '5'}) CREATE (j1)-[:PRECEDES]->(j2);
|
|
|
|
// Job HAS_STATUS Status
|
|
MATCH (j:Job {id: '1'}), (s:Status {status_id: 'CS_APP'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '1'}), (s:Status {status_id: 'PS_EXE'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '1'}), (s:Status {status_id: 'PM_PAID'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '1'}), (s:Status {status_id: 'QS_APP'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '1'}), (s:Status {status_id: 'SS_APP'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '2'}), (s:Status {status_id: 'CS_APP'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '2'}), (s:Status {status_id: 'PS_EXE'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '2'}), (s:Status {status_id: 'PM_PAID'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '2'}), (s:Status {status_id: 'QS_APP'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '2'}), (s:Status {status_id: 'SS_APP'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '3'}), (s:Status {status_id: 'CS_CON'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '3'}), (s:Status {status_id: 'PS_EXE'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '3'}), (s:Status {status_id: 'PM_APL'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '3'}), (s:Status {status_id: 'QS_CON'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '3'}), (s:Status {status_id: 'SS_CON'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '4'}), (s:Status {status_id: 'CS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '4'}), (s:Status {status_id: 'PS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '4'}), (s:Status {status_id: 'PM_NON'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '4'}), (s:Status {status_id: 'QS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '4'}), (s:Status {status_id: 'SS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '5'}), (s:Status {status_id: 'CS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '5'}), (s:Status {status_id: 'PS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '5'}), (s:Status {status_id: 'PM_NON'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '5'}), (s:Status {status_id: 'QS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
MATCH (j:Job {id: '5'}), (s:Status {status_id: 'SS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s);
|
|
|
|
// Scenario INCLUDES Job
|
|
MATCH (s:Scenario {id: 'SCN01'}), (j:Job {id: '1'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN01'}), (j:Job {id: '2'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN01'}), (j:Job {id: '3'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN01'}), (j:Job {id: '4'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN01'}), (j:Job {id: '5'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN02'}), (j:Job {id: '11'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN02'}), (j:Job {id: '12'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN02'}), (j:Job {id: '13'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN02'}), (j:Job {id: '14'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN02'}), (j:Job {id: '15'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN03'}), (j:Job {id: '11'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN03'}), (j:Job {id: '13'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN03'}), (j:Job {id: '12'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN03'}), (j:Job {id: '14'}) CREATE (s)-[:INCLUDES]->(j);
|
|
MATCH (s:Scenario {id: 'SCN03'}), (j:Job {id: '15'}) CREATE (s)-[:INCLUDES]->(j);
|
|
|
|
// Scenario DELTA_FROM Scenario
|
|
MATCH (s1:Scenario {id: 'SCN03'}), (s2:Scenario {id: 'SCN02'}) CREATE (s1)-[:DELTA_FROM]->(s2);
|
|
|
|
// Job PERFORMS Activity
|
|
MATCH (j:Job {id: '1'}), (a:Activity {id: 'ACT01'}) CREATE (j)-[:PERFORMS]->(a);
|
|
MATCH (j:Job {id: '2'}), (a:Activity {id: 'ACT02'}) CREATE (j)-[:PERFORMS]->(a);
|
|
MATCH (j:Job {id: '3'}), (a:Activity {id: 'ACT03'}) CREATE (j)-[:PERFORMS]->(a);
|
|
MATCH (j:Job {id: '4'}), (a:Activity {id: 'ACT02'}) CREATE (j)-[:PERFORMS]->(a);
|
|
MATCH (j:Job {id: '5'}), (a:Activity {id: 'ACT04'}) CREATE (j)-[:PERFORMS]->(a);
|
|
MATCH (j:Job {id: '6'}), (a:Activity {id: 'ACT05'}) CREATE (j)-[:PERFORMS]->(a);
|
|
|
|
// Activity ACTS_ON Object
|
|
MATCH (a:Activity {id: 'ACT01'}), (o:Object {id: 'OBJ01'}) CREATE (a)-[:ACTS_ON]->(o);
|
|
MATCH (a:Activity {id: 'ACT02'}), (o:Object {id: 'OBJ02'}) CREATE (a)-[:ACTS_ON]->(o);
|
|
MATCH (a:Activity {id: 'ACT02'}), (o:Object {id: 'OBJ16'}) CREATE (a)-[:ACTS_ON]->(o);
|
|
MATCH (a:Activity {id: 'ACT03'}), (o:Object {id: 'OBJ03'}) CREATE (a)-[:ACTS_ON]->(o);
|
|
MATCH (a:Activity {id: 'ACT04'}), (o:Object {id: 'OBJ04'}) CREATE (a)-[:ACTS_ON]->(o);
|
|
MATCH (a:Activity {id: 'ACT05'}), (o:Object {id: 'OBJ06'}) CREATE (a)-[:ACTS_ON]->(o);
|
|
|
|
RETURN "All data imported successfully!";
|