- 5130 레거시 시스템 분석 (00_OVERVIEW ~ 08_SAM_COMPARISON) - MES 프로젝트 문서 - API/프론트엔드 스펙 문서 - 가이드 및 레퍼런스 문서
9.7 KiB
9.7 KiB
생산/공사 (Production/Work) 분석
개요
- 디렉토리:
/make/,/work/ - DB 테이블:
work, 동적 테이블 (make_*) - 주요 기능: 공사 관리, 생산 지시, 작업 진행 추적
디렉토리 구조
/make/ (생산 지시)
/make/
├── _request.php # 요청 파라미터
├── _row.php # 행 렌더링
├── insert.php # 데이터 저장
├── insert_new.php # 신규 저장
├── list.php # 생산 목록
├── write.php # 생산 지시 등록
├── write_form.php # 생산 지시 폼 (37KB)
├── print.php # 인쇄
├── print_list.php # 목록 인쇄
├── make.js # 자바스크립트 (22KB)
├── get_check_done.php # 완료 체크
├── get_screenlist.php # 스크린 목록
├── update_checkbox.php # 체크박스 업데이트
└── load*.php # 데이터 로드
/work/ (공사 관리)
/work/
├── _request.php # 요청 파라미터 (91개 변수)
├── _row.php # 행 렌더링
├── insert.php # 데이터 저장
├── list.php # 공사 목록
├── write_form.php # 공사 등록 폼
├── view.php # 공사 상세
├── searchkd.php # 검색
├── workerlist.php # 작업자 목록
├── savefile.php # 파일 저장
└── ...
DB 스키마
work 테이블 (공사 마스터)
CREATE TABLE work (
num INT AUTO_INCREMENT PRIMARY KEY,
-- 공사 기본정보
work_state VARCHAR(50), -- 공사상태
workplacename VARCHAR(200), -- 현장명
address TEXT, -- 현장주소
chargedperson VARCHAR(50), -- 공사담당자
-- 발주처 정보 (1차)
firstord VARCHAR(100), -- 1차 발주처 (건설사)
firstordman VARCHAR(50), -- 1차 담당자
firstordmantel VARCHAR(20), -- 1차 연락처
-- 발주처 정보 (2차)
secondord VARCHAR(100), -- 2차 발주처 (시공사)
secondordman VARCHAR(50), -- 2차 담당자
secondordmantel VARCHAR(20), -- 2차 연락처
-- 작업 정보
worklist TEXT, -- 작업 목록
motormaker VARCHAR(100), -- 모터 제조사
power VARCHAR(50), -- 전원
-- 일정 정보
workday DATE, -- 시공 시작일
endworkday DATE, -- 시공 완료일
cableday DATE, -- 결선 시작일
endcableday DATE, -- 결선 완료일
-- 작업자 정보
worker VARCHAR(100), -- 시공팀
cablestaff VARCHAR(100), -- 결선팀
-- AS 정보
asday DATE, -- AS 접수일
asman VARCHAR(50), -- AS 담당자
asendday DATE, -- AS 완료일
asproday DATE, -- AS 처리예정일
setdate DATE, -- 세팅예정일
asorderman VARCHAR(50), -- AS 의뢰자
asordermantel VARCHAR(20), -- AS 의뢰자 연락처
aslist TEXT, -- AS 내역
asresult TEXT, -- AS 결과
ashistory TEXT, -- AS 이력
as_state VARCHAR(50), -- AS 상태
as_step VARCHAR(50), -- AS 단계
as_check TINYINT, -- AS 체크
aswriter VARCHAR(50), -- AS 등록자
asfee TINYINT, -- AS 유/무상
asfee_estimate INT, -- AS 유상금액
as_checkboxvalue1 CHAR(1), -- AS 체크1
as_checkboxvalue2 CHAR(1), -- AS 체크2
as_checkboxvalue3 CHAR(1), -- AS 체크3
as_checkboxvalue4 CHAR(1), -- AS 체크4
-- 클레임 정보
claimperson VARCHAR(50), -- 클레임 담당자
claimtel VARCHAR(20), -- 클레임 연락처
claimList TEXT, -- 클레임 리스트 (JSON)
-- 금액 정보
sum_estimate DECIMAL(15,0), -- 견적합계
sum_bill DECIMAL(15,0), -- 청구합계
sum_receivable DECIMAL(15,0), -- 미수금
sum_deposit DECIMAL(15,0), -- 입금합계
sum_claimamount DECIMAL(15,0), -- 클레임금액
receivable DECIMAL(15,0), -- 미수잔액
totalbill DECIMAL(15,0), -- 총청구액
decided_estimate DECIMAL(15,0), -- 확정견적
total_receivable DECIMAL(15,0), -- 총미수금
total_deposit DECIMAL(15,0), -- 총입금액
issued_receivable DECIMAL(15,0), -- 발행미수금
issued_amount DECIMAL(15,0), -- 발행금액
-- 보증 정보
warrantyFromDate DATE, -- 보증 시작일
warrantyToDate DATE, -- 보증 종료일
warrantyPeriod VARCHAR(50), -- 보증 기간
warrantyMemo TEXT, -- 보증 메모
-- 인정검사 정보
certifiedInspector VARCHAR(50), -- 인정검사원
certifiedLabelAttachedDate DATE, -- 인정라벨 부착일
-- 상태 정보
checkbox TINYINT, -- 계약체결여부
checkstep VARCHAR(50), -- 진행단계
workStatus VARCHAR(50), -- 시공상태
cableworkStatus VARCHAR(50), -- 결선상태
motorwirestatus VARCHAR(50), -- 모터결선상태
-- 체크 플래그
checkreceivable TINYINT, -- 미수금 체크
checkbond TINYINT, -- 채권 체크
-- JSON 데이터
accountList TEXT, -- 회계 리스트 (JSON)
estimateList TEXT, -- 견적 리스트 (JSON)
equipmentList TEXT, -- 장비 리스트 (JSON)
-- 기타
comment TEXT, -- 비고
outputmemo TEXT, -- 출하 메모
accountnote TEXT, -- 회계 메모
change_worklist TEXT, -- 변경 작업목록
as_refer TEXT, -- AS 참조
promiseday DATE, -- 약속일
-- 시스템 필드
regist_day DATETIME, -- 등록일
update_day DATETIME, -- 수정일
update_log TEXT, -- 수정이력
searchtag TEXT, -- 검색태그
is_deleted TINYINT DEFAULT 0, -- 삭제플래그
hit INT DEFAULT 0, -- 조회수
INDEX idx_workplacename (workplacename),
INDEX idx_secondord (secondord),
INDEX idx_work_state (work_state)
);
공사 진행 상태
work_state 상태값
| 상태 | 설명 | 조건 |
|---|---|---|
| 계약전 | 초기 상태 | checkbox = 0 |
| 착공전 | 계약 완료 | checkbox = 1 |
| 시공중 | 시공 시작 | workday 입력 |
| 결선대기 | 시공 완료 | endworkday 입력 |
| 결선중 | 결선 시작 | cableday 입력 |
| 결선완료 | 결선 완료 | endcableday 입력 |
AS 상태 (as_state)
| 상태 | 설명 | 조건 |
|---|---|---|
| 미접수 | 초기 상태 | - |
| 접수완료 | AS 접수 | asday 입력 |
| 처리예약 | 처리 예정 | asproday 입력 |
| 세팅예약 | 세팅 예정 | setdate 입력 |
| 처리완료 | AS 완료 | asendday 입력 |
비즈니스 로직
공사 상태 자동 계산
// as/list.php
$state_work = 0;
if ($row["checkbox"] == 0) $state_work = 1; // 착공전
if (substr($row["workday"], 0, 2) == "20") $state_work = 2; // 시공중
if (substr($row["endworkday"], 0, 2) == "20") $state_work = 3; // 결선대기
if (substr($row["cableday"], 0, 2) == "20") $state_work = 4; // 결선중
if (substr($row["endcableday"], 0, 2) == "20") $state_work = 5; // 결선완료
생산 지시 처리
// make/insert.php
// screen_state 업데이트
$sql = "UPDATE $DB.$tablename SET screen_state=?, update_log=? WHERE num=?";
관련 디렉토리
벤딩 관련
/bending/ # 벤딩 작업 관리
/bendingfee/ # 벤딩 비용
/bendingmap/ # 벤딩 맵
/etcbending/ # 기타 벤딩
출력물 관련
/output/ # 출하/출력
/egimake/ # EGI 제작
/guiderail/ # 가이드레일
/shutterbox/ # 셔터박스
SAM 마이그레이션 포인트
1. 공사/프로젝트 분리
-- SAM: 프로젝트 마스터
projects (
id,
tenant_id,
project_number,
project_name,
customer_id,
status, -- draft, contracted, in_progress, completed
contracted_date,
start_date,
end_date
)
-- SAM: 공사 단계
project_phases (
id,
project_id,
phase_type, -- construction, wiring, testing
planned_start,
planned_end,
actual_start,
actual_end,
assigned_team,
status
)
2. 작업 지시서
-- SAM: 작업 지시
work_orders (
id,
project_id,
work_order_number,
work_type, -- production, assembly, installation
status,
priority,
due_date,
assigned_to
)
-- SAM: 작업 상세
work_order_items (
id,
work_order_id,
item_id,
quantity,
completed_quantity,
status
)
3. 진행 상태 추적
-- SAM: 상태 이력
status_histories (
id,
entity_type, -- project, work_order, phase
entity_id,
from_status,
to_status,
changed_by,
changed_at,
reason
)
참고 파일
/work/_request.php- 91개 요청 변수 정의/work/insert.php- 저장 로직/make/write_form.php- 생산 지시 UI/as/list.php- 공사 상태 계산 로직