2025-07-08 16:10:08 +09:00
|
|
|
# **[생산] 정품 인증 등록 프로그램**
|
|
|
|
|
|
|
|
## 1. 프로그램 개요
|
|
|
|
|
|
|
|
| 항목 | 내용 |
|
|
|
|
| ---------- | ---------------------------------------------------------------- |
|
|
|
|
| **프로그램 명** | `GenuineProductRegister` |
|
|
|
|
| **실행 파일 명** | `Authentication Register Program.exe` |
|
|
|
|
| **설치 위치** | 4층 포장 구역 오른쪽 컴퓨터 |
|
2025-07-08 16:10:47 +09:00
|
|
|
| **용도** | 홈페이지 정품 인증 처리를 위해 출하 이력을 정품 인증 DB에 업로드<br/>NAS DB의 OrderTbl에 있는 제품 시리얼 번호를 추출 후 가비아 쇼핑몰 정품 인증 DB에 저장 |
|
2025-07-08 16:10:08 +09:00
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## 2. 프로그램 UI
|
|
|
|
|
|
|
|
| 메인 화면 | SSH 연결 화면 |
|
|
|
|
| ------------------------ | --------------------------- |
|
|
|
|
|  |  |
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## 3. 기능 요약
|
|
|
|
|
|
|
|
| 기능 | 설명 |
|
|
|
|
| ---------------------------- | ----------------------------------------------------------------------------- |
|
|
|
|
| **날짜별 정품 인증 데이터 조회** | 선택한 날짜에 해당하는 정품 데이터를 5개 테이블에서 조합하여 불러오기, 시리얼 분리 후 DTO 객체로 변환하여 그리드에 표시 |
|
|
|
|
| **정품 인증 DB 저장** | 그리드에 표시된 데이터를 SSH 터널을 통해 원격 DB(`dualsonic.fm_genuine`)에 INSERT 쿼리로 저장 |
|
|
|
|
| **CSV 파일 변환 및 내보내기** | 현재 그리드 내용을 UTF-8 인코딩으로 CSV 파일(`Auth_N_YYYY-MM-DD.csv`)로 저장, 특수문자 처리 포함 |
|
|
|
|
| **원격 DB 데이터 불러오기** | SSH를 통해 원격 DB에서 선택한 날짜(`buy_date`) 기준으로 데이터 조회 후 그리드에 표시 |
|
|
|
|
| **데이터 초기화 및 관리** | 날짜 선택 활성화, 그리드 초기화, 포트 및 쓰레드 안전 종료 처리 |
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## 4. 검사 순서 흐름
|
|
|
|
|
|
|
|
```
|
|
|
|
[사용자 (UI)]
|
|
|
|
↓ ① 날짜 선택 후 포장 내역 버튼 클릭
|
|
|
|
[btnOrderSearch_Click]
|
|
|
|
↓
|
|
|
|
[GetGenuineDatasByDate(date)]
|
|
|
|
↓
|
|
|
|
[FindSerialsByDate() → 시리얼 분리]
|
|
|
|
↓
|
|
|
|
[FillFromOrderTbl() → 5개 테이블 조합]
|
|
|
|
↓ ② 데이터 그리드에 표시
|
|
|
|
[dgvNormal에 데이터 로드]
|
|
|
|
↓
|
|
|
|
[사용자 데이터 확인/수정]
|
|
|
|
↓ ③ 정품 인증 저장 버튼 클릭
|
|
|
|
[btnSave_Click]
|
|
|
|
↓ SSH 터널 통신
|
|
|
|
[SSHCommand(INSERT 쿼리)]
|
|
|
|
↓
|
|
|
|
├ 성공 → 저장 완료 메시지
|
|
|
|
└ 실패 → 에러 메시지
|
|
|
|
|
|
|
|
**데이터 흐름**
|
|
|
|
[로컬 NAS DB] → [데이터 조합] → [그리드 표시] → [원격 DB 저장] → [CSV 파일 저장]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## 5. 데이터베이스 구조
|
|
|
|
|
|
|
|
### 조회 시 사용 테이블 (로컬 NAS DB)
|
|
|
|
|
|
|
|
| 테이블명 | 사용 함수 | 용도 |
|
|
|
|
| --- | --- | --- |
|
|
|
|
| `jomtOrderDB.jomtOrderTbl` | FindSerialsByDate(), FillFromOrderTblByLike(), FillFromOrderTblByIn() | 주문 정보 및 시리얼 번호 조회 |
|
|
|
|
| `jomtTesterDB.jomtProductTbl` | FillFromProductTbl() | Face/Eye SN 정보 |
|
2025-07-08 16:14:24 +09:00
|
|
|
| `jomtTesterDB.jomtCartridgeTbl` | FillFromProdData() | CountryCode, 제조일자 |
|
|
|
|
| `jomtTesterDB.jomtDeviceTbl` | FillFromProdData() |// |
|
|
|
|
| `jomtTesterDB.jomtNonTDTbl` | FillFromProdData() | //|
|
2025-07-08 16:10:08 +09:00
|
|
|
|
|
|
|
### 저장 대상 테이블 (원격 SSH DB) : DUALSONIC 쇼핑몰 DB
|
|
|
|
|
|
|
|
| 컬럼명 | 설명 | 그리드 인덱스 |
|
|
|
|
| --- | --- | --- |
|
|
|
|
| seq | 고유 번호(자동 증가) | 0 |
|
|
|
|
| model_code | 모델 코드 | 1 |
|
|
|
|
| model | 모델명 | 2 |
|
|
|
|
| invoice_number | 송장 번호 | 3 |
|
|
|
|
| packing_sn | 패킹번호 | 4 |
|
|
|
|
| body_sn | 본체코드 또는 개별품목코드 | 5 |
|
|
|
|
| face_sn | 페이스카트리지코드 | 6 |
|
|
|
|
| eye_sn | 아이카트리지코드 | 7 |
|
|
|
|
| buy_rental | 구매(B) 또는 렌탈(R) | 8 |
|
|
|
|
| country_code | 국가코드 | 9 |
|
|
|
|
| manufacture_date | 제조일 | 10 |
|
|
|
|
| buy_date | 구매일 | 11 |
|
|
|
|
| sales_store | 구매처 | 12 |
|
|
|
|
| sales_order_no | 구매처 주문번호 | 13 |
|
|
|
|
| order_name | 주문자 | 14 |
|
|
|
|
| recipient_name | 수취인 | 15 |
|
|
|
|
| order_hp | 주문자 연락처 | 16 |
|
|
|
|
| order_address | 주문자 주소 | 17 |
|
|
|
|
| note | 특이사항 | 18 |
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## 6. SSH 연결 설정 (dualsonic.fm_genuine)
|
|
|
|
|
|
|
|
### PuTTY 설정
|
|
|
|
|
|
|
|
| 항목 | 설정값 |
|
|
|
|
| --- | --- |
|
|
|
|
| **Host Name** | `139.150.76.217` |
|
|
|
|
| **Port** | `22` |
|
|
|
|
| **Connection type** | `SSH` |
|
|
|
|
| **Username** | `5phbgsdualsonic` |
|
|
|
|
| **Password** | `vl4p9iz5` |
|
|
|
|
|
|
|
|
### 터널링 설정
|
|
|
|
|
|
|
|
| 항목 | 설정값 |
|
|
|
|
| --- | --- |
|
|
|
|
| **Source port** | `3308` |
|
|
|
|
| **Destination** | `10.9.218.4:3306` |
|
|
|
|
|
|
|
|
### HeidiSQL 연결
|
|
|
|
|
|
|
|
| 항목 | 설정값 |
|
|
|
|
| --- | --- |
|
|
|
|
| **Hostname / IP** | `127.0.0.1` |
|
|
|
|
| **Port** | `3308` |
|
|
|
|
| **User** | `dualsonic` |
|
|
|
|
| **Password** | `1703741406dualsonic` |
|
|
|
|
| **Database** | `dualsonic` |
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## 📎 기타 참고 자료 (sequenceDiagram)
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
sequenceDiagram
|
|
|
|
participant 사용자
|
|
|
|
participant UI
|
|
|
|
participant 시스템
|
|
|
|
participant 로컬DB
|
|
|
|
participant 원격DB
|
|
|
|
participant 파일시스템
|
|
|
|
|
|
|
|
사용자->>UI: ① 날짜 선택
|
|
|
|
사용자->>UI: 포장 내역 버튼 클릭
|
|
|
|
UI->>시스템: btnOrderSearch_Click()
|
|
|
|
시스템->>시스템: GetGenuineDatasByDate(date)
|
|
|
|
시스템->>로컬DB: FindSerialsByDate() 호출
|
|
|
|
로컬DB-->>시스템: 시리얼 번호 리스트 반환
|
|
|
|
시스템->>시스템: 시리얼 분리 처리 (/ 구분)
|
|
|
|
|
|
|
|
loop 5개 테이블 조합
|
|
|
|
시스템->>로컬DB: FillFromOrderTbl(), FillFromProductTbl(), FillFromProdData()
|
|
|
|
로컬DB-->>시스템: 테이블별 데이터 반환
|
|
|
|
end
|
|
|
|
|
|
|
|
시스템->>UI: dgvNormal에 데이터 표시
|
|
|
|
UI-->>사용자: ② 데이터 그리드 출력
|
|
|
|
|
|
|
|
사용자->>UI: ③ 정품 인증 저장 버튼 클릭
|
|
|
|
UI->>시스템: btnSave_Click()
|
|
|
|
시스템->>시스템: INSERT 쿼리 문자열 생성
|
|
|
|
시스템->>원격DB: SSHCommand(UpdateData)
|
|
|
|
|
|
|
|
alt 저장 성공
|
|
|
|
원격DB-->>시스템: 저장 완료
|
|
|
|
시스템->>UI: 성공 메시지 출력
|
|
|
|
else 저장 실패
|
|
|
|
원격DB-->>시스템: 에러 반환
|
|
|
|
시스템->>UI: 실패 메시지 출력
|
|
|
|
end
|
|
|
|
|
|
|
|
Note over 사용자,파일시스템: 추가 기능들
|
|
|
|
사용자->>UI: CSV 변환 버튼 클릭
|
|
|
|
UI->>시스템: btnCsv_Click()
|
|
|
|
시스템->>파일시스템: Auth_N_YYYY-MM-DD.csv 저장
|
|
|
|
|
|
|
|
사용자->>UI: 불러오기 버튼 클릭
|
|
|
|
UI->>시스템: btnLoad_Click()
|
|
|
|
시스템->>원격DB: SELECT WHERE buy_date = 선택날짜
|
|
|
|
원격DB-->>시스템: 조회 결과 반환
|
|
|
|
시스템->>UI: dgvNormal에 데이터 표시
|
|
|
|
```
|