feat: 서포트 카테고리 전면 개선
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
- 서포트 카테고리 UI 개선: 좌우 스크롤, 헤더/본문 동기화, 가운데 정렬 - 동일 항목 합산 기능 구현 (Type + Size + Grade 기준) - 헤더 구조 변경: 압력/스케줄 제거, 구매수량 단일화, User Requirements 추가 - 우레탄 블럭슈 두께 정보(40t, 27t) Material Grade에 포함 - 서포트 수량 계산 수정: 취합된 숫자 그대로 표시 (4의 배수 계산 제거) - 서포트 분류 로직 개선: CLAMP, U-BOLT, URETHANE BLOCK SHOE 등 정확한 분류 - 백엔드 서포트 분류기에 User Requirements 추출 기능 추가 - 엑셀 내보내기에 서포트 카테고리 처리 로직 추가
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
"""
|
||||
구매신청 관리 API
|
||||
"""
|
||||
from fastapi import APIRouter, Depends, HTTPException, status, Body
|
||||
from fastapi import APIRouter, Depends, HTTPException, status, Body, File, UploadFile, Form
|
||||
from fastapi.responses import FileResponse
|
||||
from pydantic import BaseModel
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.orm import Session
|
||||
from typing import Optional, List, Dict
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
import os
|
||||
import json
|
||||
|
||||
@@ -20,7 +21,7 @@ logger = get_logger(__name__)
|
||||
router = APIRouter(prefix="/purchase-request", tags=["Purchase Request"])
|
||||
|
||||
# 엑셀 파일 저장 경로
|
||||
EXCEL_DIR = "exports"
|
||||
EXCEL_DIR = "uploads/excel_exports"
|
||||
os.makedirs(EXCEL_DIR, exist_ok=True)
|
||||
|
||||
class PurchaseRequestCreate(BaseModel):
|
||||
@@ -705,3 +706,76 @@ def create_excel_file(materials_data: List[Dict], file_path: str, request_no: st
|
||||
|
||||
# 파일 저장
|
||||
wb.save(file_path)
|
||||
|
||||
|
||||
@router.post("/upload-excel")
|
||||
async def upload_request_excel(
|
||||
excel_file: UploadFile = File(...),
|
||||
request_id: int = Form(...),
|
||||
category: str = Form(...),
|
||||
# current_user: dict = Depends(get_current_user),
|
||||
db: Session = Depends(get_db)
|
||||
):
|
||||
"""
|
||||
구매신청에 대한 엑셀 파일 업로드 (BOM에서 생성한 원본 파일)
|
||||
"""
|
||||
try:
|
||||
# 구매신청 정보 조회
|
||||
query = text("""
|
||||
SELECT request_no, job_no
|
||||
FROM purchase_requests
|
||||
WHERE request_id = :request_id
|
||||
""")
|
||||
result = db.execute(query, {"request_id": request_id}).fetchone()
|
||||
|
||||
if not result:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="구매신청을 찾을 수 없습니다"
|
||||
)
|
||||
|
||||
# 엑셀 저장 디렉토리 생성
|
||||
excel_dir = Path("uploads/excel_exports")
|
||||
excel_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# 파일명 생성
|
||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
safe_filename = f"{result.job_no}_{result.request_no}_{timestamp}.xlsx"
|
||||
file_path = excel_dir / safe_filename
|
||||
|
||||
# 파일 저장
|
||||
content = await excel_file.read()
|
||||
with open(file_path, "wb") as f:
|
||||
f.write(content)
|
||||
|
||||
# 구매신청 테이블에 엑셀 파일 경로 업데이트
|
||||
update_query = text("""
|
||||
UPDATE purchase_requests
|
||||
SET excel_file_path = :excel_file_path
|
||||
WHERE request_id = :request_id
|
||||
""")
|
||||
|
||||
db.execute(update_query, {
|
||||
"excel_file_path": safe_filename,
|
||||
"request_id": request_id
|
||||
})
|
||||
|
||||
db.commit()
|
||||
|
||||
logger.info(f"엑셀 파일 업로드 완료: {safe_filename}")
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
"message": "엑셀 파일이 성공적으로 업로드되었습니다",
|
||||
"file_path": safe_filename
|
||||
}
|
||||
|
||||
except HTTPException:
|
||||
raise
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
logger.error(f"Failed to upload excel file: {str(e)}")
|
||||
raise HTTPException(
|
||||
status_code=500,
|
||||
detail=f"엑셀 파일 업로드 실패: {str(e)}"
|
||||
)
|
||||
|
||||
@@ -706,7 +706,8 @@ def classify_bolt(dat_file: str, description: str, main_nom: str, length: Option
|
||||
"nominal_size_fraction": dimensions_result.get('nominal_size_fraction', main_nom),
|
||||
"length": dimensions_result.get('length', ''),
|
||||
"diameter": dimensions_result.get('diameter', ''),
|
||||
"dimension_description": dimensions_result.get('dimension_description', '')
|
||||
"dimension_description": dimensions_result.get('dimension_description', ''),
|
||||
"bolts_per_flange": dimensions_result.get('bolts_per_flange', 1)
|
||||
},
|
||||
|
||||
"grade_strength": {
|
||||
@@ -966,12 +967,19 @@ def extract_bolt_dimensions(main_nom: str, description: str) -> Dict:
|
||||
except:
|
||||
nominal_size_fraction = actual_bolt_size
|
||||
|
||||
# 플랜지당 볼트 세트 수 추출 (예: (8), (4))
|
||||
bolts_per_flange = 1 # 기본값
|
||||
flange_bolt_pattern = re.search(r'\((\d+)\)', description)
|
||||
if flange_bolt_pattern:
|
||||
bolts_per_flange = int(flange_bolt_pattern.group(1))
|
||||
|
||||
dimensions = {
|
||||
"nominal_size": actual_bolt_size, # 실제 볼트 사이즈
|
||||
"nominal_size_fraction": nominal_size_fraction, # 분수 변환값
|
||||
"length": "",
|
||||
"diameter": "",
|
||||
"dimension_description": nominal_size_fraction # 분수로 표시
|
||||
"dimension_description": nominal_size_fraction, # 분수로 표시
|
||||
"bolts_per_flange": bolts_per_flange # 플랜지당 볼트 세트 수
|
||||
}
|
||||
|
||||
# 길이 정보 추출 (개선된 패턴)
|
||||
@@ -984,6 +992,8 @@ def extract_bolt_dimensions(main_nom: str, description: str) -> Dict:
|
||||
r'X\s*(\d+(?:\.\d+)?)\s*MM', # M8 X 20MM 형태
|
||||
r',\s*(\d+(?:\.\d+)?)\s*LG', # ", 145.0000 LG" 형태 (PSV, LT 볼트용)
|
||||
r',\s*(\d+(?:\.\d+)?)\s+(?:CK|PSV|LT)', # ", 140 CK" 형태 (PSV 볼트용)
|
||||
r'PSV\s+(\d+(?:\.\d+)?)', # PSV 140 형태 (PSV 볼트 전용)
|
||||
r'(\d+(?:\.\d+)?)\s+PSV', # 140 PSV 형태 (PSV 볼트 전용)
|
||||
r'(\d+(?:\.\d+)?)\s*MM(?:\s|,|$)', # 75MM 형태 (단독)
|
||||
r'(\d+(?:\.\d+)?)\s*mm(?:\s|,|$)' # 75mm 형태 (단독)
|
||||
]
|
||||
|
||||
@@ -182,6 +182,14 @@ def classify_flange(dat_file: str, description: str, main_nom: str,
|
||||
dat_upper = dat_file.upper()
|
||||
|
||||
# 1. 플랜지 키워드 확인 (재질만 있어도 통합 분류기가 이미 플랜지로 분류했으므로 진행)
|
||||
# 사이트 글라스와 스트레이너는 밸브로 분류되어야 함
|
||||
if 'SIGHT GLASS' in desc_upper or 'STRAINER' in desc_upper or '사이트글라스' in desc_upper or '스트레이너' in desc_upper:
|
||||
return {
|
||||
"category": "VALVE",
|
||||
"overall_confidence": 1.0,
|
||||
"reason": "SIGHT GLASS 또는 STRAINER는 밸브로 분류"
|
||||
}
|
||||
|
||||
flange_keywords = ['FLG', 'FLANGE', '플랜지', 'ORIFICE', 'SPECTACLE', 'PADDLE', 'SPACER']
|
||||
has_flange_keyword = any(keyword in desc_upper or keyword in dat_upper for keyword in flange_keywords)
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ from .fitting_classifier import classify_fitting
|
||||
# Level 1: 명확한 타입 키워드 (최우선)
|
||||
LEVEL1_TYPE_KEYWORDS = {
|
||||
"BOLT": ["FLANGE BOLT", "U-BOLT", "U BOLT", "BOLT", "STUD", "NUT", "SCREW", "WASHER", "볼트", "너트", "스터드", "나사", "와셔", "유볼트"],
|
||||
"VALVE": ["VALVE", "GATE", "BALL", "GLOBE", "CHECK", "BUTTERFLY", "NEEDLE", "RELIEF", "밸브", "게이트", "볼", "글로브", "체크", "버터플라이", "니들", "릴리프"],
|
||||
"VALVE": ["VALVE", "GATE", "BALL", "GLOBE", "CHECK", "BUTTERFLY", "NEEDLE", "RELIEF", "SIGHT GLASS", "STRAINER", "밸브", "게이트", "볼", "글로브", "체크", "버터플라이", "니들", "릴리프", "사이트글라스", "스트레이너"],
|
||||
"FLANGE": ["FLG", "FLANGE", "플랜지", "프랜지", "ORIFICE", "SPECTACLE", "PADDLE", "SPACER", "BLIND", "REDUCING FLANGE", "RED FLANGE"],
|
||||
"PIPE": ["PIPE", "TUBE", "파이프", "배관", "SMLS", "SEAMLESS"],
|
||||
"FITTING": ["SOCK-O-LET", "WELD-O-LET", "ELL-O-LET", "THREAD-O-LET", "ELB-O-LET", "NIP-O-LET", "COUP-O-LET", "SOCKOLET", "WELDOLET", "ELLOLET", "THREADOLET", "ELBOLET", "NIPOLET", "COUPOLET", "OLET", "ELBOW", "ELL", "TEE", "REDUCER", "CAP", "COUPLING", "NIPPLE", "SWAGE", "PLUG", "엘보", "티", "리듀서", "캡", "니플", "커플링", "플러그", "CONC", "ECC"],
|
||||
@@ -110,6 +110,17 @@ def classify_material_integrated(description: str, main_nom: str = "",
|
||||
"reason": "스페셜 키워드 발견"
|
||||
}
|
||||
|
||||
# VALVE 카테고리 우선 확인 (SIGHT GLASS, STRAINER)
|
||||
if ('SIGHT GLASS' in desc_upper or 'STRAINER' in desc_upper or
|
||||
'사이트글라스' in desc_upper or '스트레이너' in desc_upper):
|
||||
return {
|
||||
"category": "VALVE",
|
||||
"confidence": 1.0,
|
||||
"evidence": ["VALVE_SPECIAL_KEYWORD"],
|
||||
"classification_level": "LEVEL0_VALVE",
|
||||
"reason": "SIGHT GLASS 또는 STRAINER 키워드 발견"
|
||||
}
|
||||
|
||||
# SUPPORT 카테고리 우선 확인 (BOLT 카테고리보다 먼저)
|
||||
# U-BOLT, CLAMP, URETHANE BLOCK 등
|
||||
if ('U-BOLT' in desc_upper or 'U BOLT' in desc_upper or '유볼트' in desc_upper or
|
||||
|
||||
@@ -108,7 +108,22 @@ def classify_support(dat_file: str, description: str, main_nom: str,
|
||||
# 4. 사이즈 정보 추출
|
||||
size_result = extract_support_size(description, main_nom)
|
||||
|
||||
# 5. 최종 결과 조합
|
||||
# 5. 사용자 요구사항 추출
|
||||
user_requirements = extract_support_user_requirements(description)
|
||||
|
||||
# 6. 우레탄 블럭슈 두께 정보 추출 및 Material Grade 보강
|
||||
enhanced_material_grade = material_result.get('grade', 'UNKNOWN')
|
||||
if support_type_result.get("support_type") == "URETHANE_BLOCK":
|
||||
# 두께 정보 추출 (40t, 27t 등)
|
||||
thickness_match = re.search(r'(\d+)\s*[tT](?![oO])', description.upper())
|
||||
if thickness_match:
|
||||
thickness = f"{thickness_match.group(1)}t"
|
||||
if enhanced_material_grade == 'UNKNOWN' or not enhanced_material_grade:
|
||||
enhanced_material_grade = thickness
|
||||
elif thickness not in enhanced_material_grade:
|
||||
enhanced_material_grade = f"{enhanced_material_grade} {thickness}"
|
||||
|
||||
# 7. 최종 결과 조합
|
||||
return {
|
||||
"category": "SUPPORT",
|
||||
|
||||
@@ -118,10 +133,10 @@ def classify_support(dat_file: str, description: str, main_nom: str,
|
||||
"load_rating": load_result.get("load_rating", ""),
|
||||
"load_capacity": load_result.get("capacity", ""),
|
||||
|
||||
# 재질 정보 (공통 모듈)
|
||||
# 재질 정보 (공통 모듈) - 우레탄 블럭슈 두께 정보 포함
|
||||
"material": {
|
||||
"standard": material_result.get('standard', 'UNKNOWN'),
|
||||
"grade": material_result.get('grade', 'UNKNOWN'),
|
||||
"grade": enhanced_material_grade,
|
||||
"material_type": material_result.get('material_type', 'UNKNOWN'),
|
||||
"confidence": material_result.get('confidence', 0.0)
|
||||
},
|
||||
@@ -129,6 +144,9 @@ def classify_support(dat_file: str, description: str, main_nom: str,
|
||||
# 사이즈 정보
|
||||
"size_info": size_result,
|
||||
|
||||
# 사용자 요구사항
|
||||
"user_requirements": user_requirements,
|
||||
|
||||
# 전체 신뢰도
|
||||
"overall_confidence": calculate_support_confidence({
|
||||
"type": support_type_result.get('confidence', 0),
|
||||
@@ -183,6 +201,34 @@ def classify_support_type(dat_file: str, description: str) -> Dict:
|
||||
"evidence": ["NO_SUPPORT_TYPE_FOUND"]
|
||||
}
|
||||
|
||||
def extract_support_user_requirements(description: str) -> List[str]:
|
||||
"""서포트 사용자 요구사항 추출"""
|
||||
|
||||
desc_upper = description.upper()
|
||||
requirements = []
|
||||
|
||||
# 표면처리 관련
|
||||
if 'GALV' in desc_upper or 'GALVANIZED' in desc_upper:
|
||||
requirements.append('GALVANIZED')
|
||||
if 'HDG' in desc_upper or 'HOT DIP' in desc_upper:
|
||||
requirements.append('HOT DIP GALVANIZED')
|
||||
if 'PAINT' in desc_upper or 'PAINTED' in desc_upper:
|
||||
requirements.append('PAINTED')
|
||||
|
||||
# 재질 관련
|
||||
if 'SS' in desc_upper or 'STAINLESS' in desc_upper:
|
||||
requirements.append('STAINLESS STEEL')
|
||||
if 'CARBON' in desc_upper:
|
||||
requirements.append('CARBON STEEL')
|
||||
|
||||
# 특수 요구사항
|
||||
if 'FIRE SAFE' in desc_upper:
|
||||
requirements.append('FIRE SAFE')
|
||||
if 'SEISMIC' in desc_upper or '내진' in desc_upper:
|
||||
requirements.append('SEISMIC')
|
||||
|
||||
return requirements
|
||||
|
||||
def classify_load_rating(description: str) -> Dict:
|
||||
"""하중 등급 분류"""
|
||||
|
||||
|
||||
@@ -89,6 +89,24 @@ VALVE_TYPES = {
|
||||
"typical_connections": ["FLANGED", "THREADED"],
|
||||
"pressure_range": "150LB ~ 600LB",
|
||||
"special_features": ["LUBRICATED", "NON_LUBRICATED"]
|
||||
},
|
||||
|
||||
"SIGHT_GLASS": {
|
||||
"dat_file_patterns": ["SIGHT_", "SG_"],
|
||||
"description_keywords": ["SIGHT GLASS", "SIGHT", "사이트글라스", "사이트 글라스"],
|
||||
"characteristics": "유체 확인용 관찰창",
|
||||
"typical_connections": ["FLANGED", "THREADED"],
|
||||
"pressure_range": "150LB ~ 600LB",
|
||||
"special_features": ["TRANSPARENT", "VISUAL_INSPECTION"]
|
||||
},
|
||||
|
||||
"STRAINER": {
|
||||
"dat_file_patterns": ["STRAINER_", "STR_"],
|
||||
"description_keywords": ["STRAINER", "스트레이너", "여과기"],
|
||||
"characteristics": "이물질 여과용",
|
||||
"typical_connections": ["FLANGED", "THREADED"],
|
||||
"pressure_range": "150LB ~ 600LB",
|
||||
"special_features": ["MESH_FILTER", "Y_TYPE", "BASKET_TYPE"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -212,8 +230,13 @@ def classify_valve(dat_file: str, description: str, main_nom: str, length: float
|
||||
desc_upper = description.upper()
|
||||
dat_upper = dat_file.upper()
|
||||
|
||||
# 1. 밸브 키워드 확인 (재질만 있어도 통합 분류기가 이미 밸브로 분류했으므로 진행)
|
||||
valve_keywords = ['VALVE', 'GATE', 'BALL', 'GLOBE', 'CHECK', 'BUTTERFLY', 'NEEDLE', 'RELIEF', 'SOLENOID', '밸브', '게이트', '볼', '글로브', '체크', '버터플라이', '니들', '릴리프', '솔레노이드']
|
||||
# 1. 사이트 글라스와 스트레이너 우선 확인
|
||||
if 'SIGHT GLASS' in desc_upper or 'STRAINER' in desc_upper or '사이트글라스' in desc_upper or '스트레이너' in desc_upper:
|
||||
# 사이트 글라스와 스트레이너는 항상 밸브로 분류
|
||||
pass
|
||||
|
||||
# 밸브 키워드 확인 (재질만 있어도 통합 분류기가 이미 밸브로 분류했으므로 진행)
|
||||
valve_keywords = ['VALVE', 'GATE', 'BALL', 'GLOBE', 'CHECK', 'BUTTERFLY', 'NEEDLE', 'RELIEF', 'SOLENOID', 'SIGHT GLASS', 'STRAINER', '밸브', '게이트', '볼', '글로브', '체크', '버터플라이', '니들', '릴리프', '솔레노이드', '사이트글라스', '스트레이너']
|
||||
has_valve_keyword = any(keyword in desc_upper or keyword in dat_upper for keyword in valve_keywords)
|
||||
|
||||
# 밸브 재질 확인 (A216, A217, A351, A352)
|
||||
|
||||
168
backend/exports/PR-20251016-001.json
Normal file
168
backend/exports/PR-20251016-001.json
Normal file
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"request_no": "PR-20251016-001",
|
||||
"job_no": "1",
|
||||
"created_at": "2025-10-16T05:40:46.947440",
|
||||
"materials": [
|
||||
{
|
||||
"material_id": 3543,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 11,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3551,
|
||||
"description": "PIPE, SMLS, SCH 80, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 92,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3555,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 23,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3565,
|
||||
"description": "PIPE, SMLS, SCH 80, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 139,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3574,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 14,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3588,
|
||||
"description": "PIPE, SMLS, SCH 80, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 98,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3844,
|
||||
"description": "PIPE, SMLS, SCH 80, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 82,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3926,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "10\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 4,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3930,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "12\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3931,
|
||||
"description": "PIPE, SMLS, SCH 40, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 50,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3981,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 9,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3990,
|
||||
"description": "PIPE, SMLS, SCH 40, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 25,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3998,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 8,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4023,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 15,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4126,
|
||||
"description": "PIPE, SMLS, SCH 40, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "4\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 12,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4138,
|
||||
"description": "PIPE, SMLS, SCH 40, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "6\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 13,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
}
|
||||
],
|
||||
"grouped_materials": []
|
||||
}
|
||||
BIN
backend/exports/PR-20251016-001.xlsx
Normal file
BIN
backend/exports/PR-20251016-001.xlsx
Normal file
Binary file not shown.
778
backend/exports/PR-20251016-002.json
Normal file
778
backend/exports/PR-20251016-002.json
Normal file
@@ -0,0 +1,778 @@
|
||||
{
|
||||
"request_no": "PR-20251016-002",
|
||||
"job_no": "1",
|
||||
"created_at": "2025-10-16T05:44:08.264221",
|
||||
"materials": [
|
||||
{
|
||||
"material_id": 3540,
|
||||
"description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT",
|
||||
"category": "FITTING",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3542,
|
||||
"description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT",
|
||||
"category": "FITTING",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3682,
|
||||
"description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT",
|
||||
"category": "FITTING",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3831,
|
||||
"description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT",
|
||||
"category": "FITTING",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 4,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3835,
|
||||
"description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT",
|
||||
"category": "FITTING",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 3,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3838,
|
||||
"description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT",
|
||||
"category": "FITTING",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 3840,
|
||||
"description": "NIPPLE, SMLS, SCH 160, ASTM A106 B",
|
||||
"category": "FITTING",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4151,
|
||||
"description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304",
|
||||
"category": "FITTING",
|
||||
"size": "10\"",
|
||||
"material_grade": "ASTM A403 WP304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4152,
|
||||
"description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 25,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4177,
|
||||
"description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304",
|
||||
"category": "FITTING",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A403 WP304",
|
||||
"quantity": 6,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4183,
|
||||
"description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 12,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4195,
|
||||
"description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304",
|
||||
"category": "FITTING",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A403 WP304",
|
||||
"quantity": 4,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4199,
|
||||
"description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "4\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 7,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4206,
|
||||
"description": "90 SR ELL, SMLS, SCH 40, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "4\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4207,
|
||||
"description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "6\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 7,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4214,
|
||||
"description": "45 ELL, SMLS, SCH 40, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "6\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4216,
|
||||
"description": "TEE, SMLS, SCH 40, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 4,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4220,
|
||||
"description": "TEE, SMLS, SCH 40S, ASTM A403 WP304",
|
||||
"category": "FITTING",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A403 WP304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4221,
|
||||
"description": "TEE, SMLS, SCH 40, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4222,
|
||||
"description": "TEE, SMLS, SCH 40S, ASTM A403 WP304",
|
||||
"category": "FITTING",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A403 WP304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4223,
|
||||
"description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "2\" x 1 1/2\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 3,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4226,
|
||||
"description": "TEE RED, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304",
|
||||
"category": "FITTING",
|
||||
"size": "2\" x 1 1/2\"",
|
||||
"material_grade": "ASTM A403 WP304",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4228,
|
||||
"description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "3\" x 1 1/2\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 3,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4231,
|
||||
"description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "4\" x 1 1/2\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4233,
|
||||
"description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "1 1/2\" x 1\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 5,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4238,
|
||||
"description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "1 1/2\" x 3/4\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4240,
|
||||
"description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "1\" x 3/4\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 5,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4245,
|
||||
"description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304",
|
||||
"category": "FITTING",
|
||||
"size": "12\" x 10\"",
|
||||
"material_grade": "ASTM A403 WP304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4246,
|
||||
"description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "2\" x 1 1/2\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 6,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4252,
|
||||
"description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304",
|
||||
"category": "FITTING",
|
||||
"size": "2\" x 1 1/2\"",
|
||||
"material_grade": "ASTM A403 WP304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4253,
|
||||
"description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "2\" x 1\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4254,
|
||||
"description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "3\" x 1 1/2\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4256,
|
||||
"description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304",
|
||||
"category": "FITTING",
|
||||
"size": "3\" x 1\"",
|
||||
"material_grade": "ASTM A403 WP304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4257,
|
||||
"description": "RED CONC, SMLS, SCH 40 X SCH 40, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "3\" x 2\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4258,
|
||||
"description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304",
|
||||
"category": "FITTING",
|
||||
"size": "3\" x 2\"",
|
||||
"material_grade": "ASTM A403 WP304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 4259,
|
||||
"description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "3/4\" x 1/2\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5136,
|
||||
"description": "90 ELL, SW, 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5138,
|
||||
"description": "90 ELL, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 57,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5142,
|
||||
"description": "90 ELL, SW, 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 9,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5146,
|
||||
"description": "90 ELL, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 32,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5178,
|
||||
"description": "90 ELL, SW, 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 9,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5245,
|
||||
"description": "90 ELL, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 32,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5277,
|
||||
"description": "90 ELL, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 24,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5301,
|
||||
"description": "TEE, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 7,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5308,
|
||||
"description": "TEE, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 15,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5323,
|
||||
"description": "TEE, SW, 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5324,
|
||||
"description": "TEE, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5326,
|
||||
"description": "TEE RED, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1 1/2\" x 1\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 5,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5331,
|
||||
"description": "TEE RED, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1 1/2\" x 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5333,
|
||||
"description": "TEE RED, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1 1/2\" x 3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 6,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5339,
|
||||
"description": "TEE RED, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1\" x 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 7,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5346,
|
||||
"description": "TEE RED, SW, 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "1\" x 1/2\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 6,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5349,
|
||||
"description": "TEE RED, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1\" x 3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 3,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5355,
|
||||
"description": "TEE RED, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "2\" x 1\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 4,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5359,
|
||||
"description": "TEE RED, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "3/4\" x 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 5,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5364,
|
||||
"description": "CAP, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5365,
|
||||
"description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5366,
|
||||
"description": "CAP, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5367,
|
||||
"description": "CAP, SW, 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5368,
|
||||
"description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5370,
|
||||
"description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5371,
|
||||
"description": "CAP, SMLS, SCH 40, BW, ASTM A234 WPB",
|
||||
"category": "FITTING",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A234 WPB",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5372,
|
||||
"description": "CAP, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5373,
|
||||
"description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 36,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5409,
|
||||
"description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5426,
|
||||
"description": "SOCK O LET, SW, 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "10\" x 1 1/2\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5427,
|
||||
"description": "SOCK O LET, SW, 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "10\" x 1\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5428,
|
||||
"description": "SOCK O LET, SW, 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "10\" x 3/4\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5429,
|
||||
"description": "SOCK O LET, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "2\" x 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5431,
|
||||
"description": "ELL O LET, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "2\" x 3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5432,
|
||||
"description": "ELL O LET, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "3\" x 3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5433,
|
||||
"description": "SOCK O LET, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "3\" x 3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 9,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5442,
|
||||
"description": "SOCK O LET, SW, 3000LB, ASTM A182 F304",
|
||||
"category": "FITTING",
|
||||
"size": "3\" x 3/4\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 3,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5445,
|
||||
"description": "SOCK O LET, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "3\" x 1\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5446,
|
||||
"description": "SOCK O LET, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "4\" x 3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5447,
|
||||
"description": "SOCK O LET, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "6\" x 1 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 5449,
|
||||
"description": "SOCK O LET, SW, 3000LB, ASTM A105",
|
||||
"category": "FITTING",
|
||||
"size": "6\" x 3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
}
|
||||
],
|
||||
"grouped_materials": []
|
||||
}
|
||||
BIN
backend/exports/PR-20251016-002.xlsx
Normal file
BIN
backend/exports/PR-20251016-002.xlsx
Normal file
Binary file not shown.
168
backend/exports/PR-20251016-003.json
Normal file
168
backend/exports/PR-20251016-003.json
Normal file
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"request_no": "PR-20251016-003",
|
||||
"job_no": "2",
|
||||
"created_at": "2025-10-16T06:01:25.896639",
|
||||
"materials": [
|
||||
{
|
||||
"material_id": 7082,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 11,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7090,
|
||||
"description": "PIPE, SMLS, SCH 80, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 92,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7094,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 23,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7104,
|
||||
"description": "PIPE, SMLS, SCH 80, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 139,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7113,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 14,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7127,
|
||||
"description": "PIPE, SMLS, SCH 80, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 98,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7383,
|
||||
"description": "PIPE, SMLS, SCH 80, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 82,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7465,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "10\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 4,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7469,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "12\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7470,
|
||||
"description": "PIPE, SMLS, SCH 40, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 50,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7520,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 9,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7529,
|
||||
"description": "PIPE, SMLS, SCH 40, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 25,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7537,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 8,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7562,
|
||||
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
|
||||
"category": "PIPE",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A312 TP304",
|
||||
"quantity": 15,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7665,
|
||||
"description": "PIPE, SMLS, SCH 40, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "4\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 12,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 7677,
|
||||
"description": "PIPE, SMLS, SCH 40, ASTM A106 B",
|
||||
"category": "PIPE",
|
||||
"size": "6\"",
|
||||
"material_grade": "ASTM A106 B",
|
||||
"quantity": 13,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
}
|
||||
],
|
||||
"grouped_materials": []
|
||||
}
|
||||
BIN
backend/exports/PR-20251016-003.xlsx
Normal file
BIN
backend/exports/PR-20251016-003.xlsx
Normal file
Binary file not shown.
408
backend/exports/PR-20251016-004.json
Normal file
408
backend/exports/PR-20251016-004.json
Normal file
@@ -0,0 +1,408 @@
|
||||
{
|
||||
"request_no": "PR-20251016-004",
|
||||
"job_no": "5",
|
||||
"created_at": "2025-10-16T05:24:45.921468",
|
||||
"materials": [
|
||||
{
|
||||
"material_id": 118834,
|
||||
"description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "10\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 5,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118839,
|
||||
"description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "12\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118840,
|
||||
"description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 36,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118876,
|
||||
"description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 6,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118882,
|
||||
"description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "2\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 7,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118890,
|
||||
"description": "FLG WELD NECK RF SCH 40, 600LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 8,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118895,
|
||||
"description": "FLG WELD NECK RF SCH 40S, 600LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118897,
|
||||
"description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 12,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118909,
|
||||
"description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118914,
|
||||
"description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "3\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 9,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118923,
|
||||
"description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 3,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118926,
|
||||
"description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "6\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 10,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118936,
|
||||
"description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 14,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118948,
|
||||
"description": "FLG SWRF SCH 80, 150LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 15,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118952,
|
||||
"description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 9,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118953,
|
||||
"description": "FLG SWRF SCH 80, 150LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 66,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118957,
|
||||
"description": "FLG SWRF SCH 80, 600LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 6,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118959,
|
||||
"description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 8,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 118967,
|
||||
"description": "FLG SWRF SCH 80, 150LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 40,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119003,
|
||||
"description": "FLG SWRF SCH 80, 600LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 5,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119008,
|
||||
"description": "RED. FLG SWRF SCH 40S, 150LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "1 1/2\" x 3/4\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119010,
|
||||
"description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "1 1/2\" x 3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 4,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119014,
|
||||
"description": "RED. FLG SWRF SCH 80, 600LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "1 1/2\" x 3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119024,
|
||||
"description": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "1\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119092,
|
||||
"description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "1\" x 3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119097,
|
||||
"description": "FLG SWRF SCH 80, 300LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "1 1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 3,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119102,
|
||||
"description": "FLG SWRF SCH 80, 150LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "1/2\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 57,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119159,
|
||||
"description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 7,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119166,
|
||||
"description": "FLG SWRF SCH 40S, 300LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119167,
|
||||
"description": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304",
|
||||
"category": "FLANGE",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A182 F304",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119179,
|
||||
"description": "FLG SWRF SCH 80, 300LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119181,
|
||||
"description": "FLG SWRF SCH 80, 600LB, ASTM A105",
|
||||
"category": "FLANGE",
|
||||
"size": "3/4\"",
|
||||
"material_grade": "ASTM A105",
|
||||
"quantity": 5,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119985,
|
||||
"description": "ORIFICE, 150LB",
|
||||
"category": "FLANGE",
|
||||
"size": "10\"",
|
||||
"material_grade": "-",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119987,
|
||||
"description": "WOOD ORIFICE, 300LB",
|
||||
"category": "FLANGE",
|
||||
"size": "10\"",
|
||||
"material_grade": "-",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119989,
|
||||
"description": "WOOD ORIFICE, 600LB",
|
||||
"category": "FLANGE",
|
||||
"size": "3\"",
|
||||
"material_grade": "-",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119990,
|
||||
"description": "WOOD ORIFICE, 300LB",
|
||||
"category": "FLANGE",
|
||||
"size": "4\"",
|
||||
"material_grade": "-",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119992,
|
||||
"description": "WOOD ORIFICE, 300LB",
|
||||
"category": "FLANGE",
|
||||
"size": "5\"",
|
||||
"material_grade": "-",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119993,
|
||||
"description": "WOOD ORIFICE, 600LB",
|
||||
"category": "FLANGE",
|
||||
"size": "5\"",
|
||||
"material_grade": "-",
|
||||
"quantity": 1,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119994,
|
||||
"description": "WOOD ORIFICE, 150LB",
|
||||
"category": "FLANGE",
|
||||
"size": "6\"",
|
||||
"material_grade": "-",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
},
|
||||
{
|
||||
"material_id": 119996,
|
||||
"description": "WOOD ORIFICE, 300LB",
|
||||
"category": "FLANGE",
|
||||
"size": "8\"",
|
||||
"material_grade": "-",
|
||||
"quantity": 2,
|
||||
"unit": "EA",
|
||||
"user_requirement": ""
|
||||
}
|
||||
],
|
||||
"grouped_materials": []
|
||||
}
|
||||
BIN
backend/exports/PR-20251016-004.xlsx
Normal file
BIN
backend/exports/PR-20251016-004.xlsx
Normal file
Binary file not shown.
Reference in New Issue
Block a user