- 5130 레거시 시스템 분석 (00_OVERVIEW ~ 08_SAM_COMPARISON) - MES 프로젝트 문서 - API/프론트엔드 스펙 문서 - 가이드 및 레퍼런스 문서
306 lines
9.7 KiB
Markdown
306 lines
9.7 KiB
Markdown
# 생산/공사 (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 테이블 (공사 마스터)
|
|
```sql
|
|
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 입력 |
|
|
|
|
## 비즈니스 로직
|
|
|
|
### 공사 상태 자동 계산
|
|
```php
|
|
// 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; // 결선완료
|
|
```
|
|
|
|
### 생산 지시 처리
|
|
```php
|
|
// 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. 공사/프로젝트 분리
|
|
```sql
|
|
-- 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. 작업 지시서
|
|
```sql
|
|
-- 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. 진행 상태 추적
|
|
```sql
|
|
-- 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` - 공사 상태 계산 로직
|