Proses Pembuatan Work Order

This commit is contained in:
2025-05-16 09:52:58 +07:00
parent ebd97c2e2d
commit ac5a44451c

461
Proses Pembuatan Work Order Normal file
View File

@@ -0,0 +1,461 @@
# Proses Pembuatan Work Order (Berbasis Parameter Pengujian)
## Database Schema
### Tabel Bahan Uji
```sql
CREATE TABLE tabel_bahan_uji (
bahan_uji_id INT AUTO_INCREMENT PRIMARY KEY,
nama_bahan_uji VARCHAR(50) NOT NULL,
kode_bahan_uji CHAR(4) NOT NULL,
bidang_pengujian VARCHAR(20),
UNIQUE (nama_bahan_uji)
);
```
Contoh Data:
| bahan_uji_id | nama_bahan_uji | kode_bahan_uji | bidang_pengujian |
|--------------|--------------------------|----------------|------------------|
| 1 | Udara lingkungan kerja | UL | KIMIA |
| 2 | Lingkungan kerja | LK | FISIK |
| 3 | Intensitas kebisingan | IK | KIMIA |
| 4 | Air Minum, Hygiene, Limbah | AMHL | KIMIA |
| 5 | Air Minum | AM | KIMIA/BIOLOGI |
| 6 | Limbah domestik | LD | KIMIA/BIOLOGI |
| 7 | IPAL OUTLET | IO | BIOLOGI |
### Tabel Parameter Pengujian
```sql
CREATE TABLE tabel_parameter_pengujian (
parameter_id INT AUTO_INCREMENT PRIMARY KEY,
bahan_uji_id INT NOT NULL,
nama_parameter VARCHAR(100) NOT NULL,
metode VARCHAR(50),
peraturan VARCHAR(50),
diukur_di_tkp BOOLEAN DEFAULT FALSE,
jumlah_botol INT DEFAULT 0,
volume_sampel VARCHAR(10) DEFAULT NULL,
pengawetan VARCHAR(50) DEFAULT NULL,
botol_kelompok VARCHAR(20) DEFAULT NULL,
FOREIGN KEY (bahan_uji_id) REFERENCES tabel_bahan_uji(bahan_uji_id)
);
```
Contoh Data:
| parameter_id | bahan_uji_id | nama_parameter | metode | peraturan | diukur_di_tkp | jumlah_botol | volume_sampel | pengawetan | botol_kelompok |
|--------------|--------------|----------------|--------|-----------|---------------|--------------|---------------|------------|----------------|
| 1 | 1 | Debu Total | SNI 16-7058-2004 | Permenkes No.2 Tahun 2023 | FALSE | 1 | 1000-2000 L udara | NULL | Filter Udara |
| 12 | 5 | Nitrat (NO3 terlarut) | SNI/APHA | Permenkes No.2 Tahun 2023 | FALSE | 1 | 500 mL | Asam Nitrat | Kimia |
| 24 | 5 | E. Coli | SNI/APHA | Permenkes No.2 Tahun 2023 | FALSE | 1 | 500 mL | Disimpan dengan es | Biologi |
| 25 | 5 | Total Coliform | SNI/APHA | Permenkes No.2 Tahun 2023 | FALSE | 1 | 500 mL | Disimpan dengan es | Biologi |
| 27 | 6 | pH | SNI-6989.11-2019 | Permen LHK No.P.68/2016 | TRUE | 0 | NULL | NULL | NULL |
| 28 | 6 | BOD | APHA 5210 B-2017 | Permen LHK No.P.68/2016 | FALSE | 1 | 500 mL | Botol Gelap | BOD |
| 34 | 6 | Total Coliform | SNI | Permen LHK No.P.68/2016 | FALSE | 1 | 500 mL | Disimpan dengan es | Biologi |
## Penjelasan Kolom Penting
### botol_kelompok
Kolom ini digunakan untuk mengelompokkan parameter yang bisa menggunakan botol yang sama:
- **"Kimia"**: Parameter kimia seperti Nitrat, Nitrit, dll., bisa dikumpulkan dalam 1 botol.
- **"Biologi"**: Parameter seperti E. Coli, Total Coliform, memerlukan botol steril terpisah.
- **"BOD"**: Memerlukan botol gelap sendiri.
- **"Filter Udara"**: Untuk Debu Total (khusus udara).
### jumlah_botol
Jumlah botol per parameter. Namun, jika beberapa parameter bisa digabung dalam 1 botol (berdasarkan botol_kelompok), total botol per titik akan lebih sedikit.
### pengawetan
Cara pengawetan untuk setiap parameter (misalnya asam nitrat, es, botol gelap).
## Tabel Tugas Work Order
### tabel_tugas
```sql
CREATE TABLE tabel_tugas (
tugas_id VARCHAR(20) PRIMARY KEY,
lokasi VARCHAR(100) NOT NULL,
tanggal_tugas DATE NOT NULL,
status VARCHAR(20) DEFAULT 'Direncanakan',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
created_by VARCHAR(50)
);
```
Contoh Data:
| tugas_id | lokasi | tanggal_tugas | status | created_at | created_by |
|----------|--------|---------------|--------|------------|------------|
| WO-2025-016 | Sungai Citarum | 2025-05-16 | Direncanakan | 2025-05-16 09:20:00 | Supervisor_001 |
### tabel_titik_sampel
```sql
CREATE TABLE tabel_titik_sampel (
titik_id INT AUTO_INCREMENT PRIMARY KEY,
tugas_id VARCHAR(20) NOT NULL,
kode_sampel VARCHAR(50) NOT NULL,
bahan_uji_id INT NOT NULL,
deskripsi_lokasi TEXT,
waktu_pengambilan TIMESTAMP NULL,
petugas VARCHAR(50),
FOREIGN KEY (tugas_id) REFERENCES tabel_tugas(tugas_id),
FOREIGN KEY (bahan_uji_id) REFERENCES tabel_bahan_uji(bahan_uji_id)
);
```
Contoh Data:
| titik_id | tugas_id | kode_sampel | bahan_uji_id | deskripsi_lokasi | waktu_pengambilan | petugas |
|----------|----------|-------------|--------------|------------------|-------------------|---------|
| 1 | WO-2025-016 | WO-2025-016-T1 | 5 | Hulu Sungai Citarum | NULL | NULL |
| 2 | WO-2025-016 | WO-2025-016-T2 | 6 | Outlet Pabrik Tekstil | NULL | NULL |
### tabel_botol_sampel
```sql
CREATE TABLE tabel_botol_sampel (
botol_id INT AUTO_INCREMENT PRIMARY KEY,
titik_id INT NOT NULL,
barcode VARCHAR(100) NOT NULL,
botol_nomor VARCHAR(10) NOT NULL,
botol_kelompok VARCHAR(20) NOT NULL,
status VARCHAR(20) DEFAULT 'Belum diambil',
parameter_sampel JSON,
FOREIGN KEY (titik_id) REFERENCES tabel_titik_sampel(titik_id)
);
```
Contoh Data:
| botol_id | titik_id | barcode | botol_nomor | botol_kelompok | status | parameter_sampel |
|----------|----------|---------|-------------|----------------|--------|------------------|
| 1 | 1 | WO-2025-016-20250516-AM-T1-01 | 01 | Kimia | Sampel diambil | {"Nitrat (NO3 terlarut)": {"status": "Sampel diambil", "hasil": null}} |
| 2 | 1 | WO-2025-016-20250516-AM-T1-02 | 02 | Biologi | Sampel diambil | {"E. Coli": {"status": "Sampel diambil", "hasil": null}} |
| 3 | 2 | WO-2025-016-20250516-LD-T2-01 | 01 | BOD | Sampel diambil | {"BOD": {"status": "Sampel diambil", "hasil": null}} |
| 4 | 2 | WO-2025-016-20250516-LD-T2-02 | 02 | Biologi | Sampel diambil | {"Total Coliform": {"status": "Sampel diambil", "hasil": null}} |
### tabel_parameter_tkp
```sql
CREATE TABLE tabel_parameter_tkp (
pengukuran_id INT AUTO_INCREMENT PRIMARY KEY,
titik_id INT NOT NULL,
parameter_id INT NOT NULL,
nilai VARCHAR(50),
satuan VARCHAR(20),
waktu_pengukuran TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
petugas VARCHAR(50),
FOREIGN KEY (titik_id) REFERENCES tabel_titik_sampel(titik_id),
FOREIGN KEY (parameter_id) REFERENCES tabel_parameter_pengujian(parameter_id)
);
```
Contoh Data:
| pengukuran_id | titik_id | parameter_id | nilai | satuan | waktu_pengukuran | petugas |
|---------------|----------|--------------|-------|--------|------------------|---------|
| 1 | 2 | 27 | 7.2 | - | 2025-05-16 13:45:00 | Petugas_002 |
## Alur Proses Pembuatan Work Order
### Langkah 1: Inisiasi oleh Supervisor
**Waktu**: 09:20 AM WIB, Jumat, 16 Mei 2025.
**Tugas**:
- Supervisor membuka aplikasi untuk membuat work order baru.
- Input detail dasar:
- Tugas ID: "WO-2025-016" (otomatis).
- Lokasi: "Sungai Citarum".
- Tanggal Tugas: 16 Mei 2025.
- Jumlah Titik Sampel: 2 (T1 dan T2).
### Langkah 2: Pilih Bahan Uji dan Parameter untuk Setiap Titik
**Tugas**:
- Untuk Titik 1 (T1):
- Pilih Bahan Uji: "Air Minum".
- Aplikasi menampilkan daftar parameter dari masterdata:
- Nitrat (NO3 terlarut), E. Coli, Total Coliform, dll.
- Supervisor memilih parameter yang dipesan klien: Nitrat, E. Coli.
- Untuk Titik 2 (T2):
- Pilih Bahan Uji: "Limbah Domestik".
- Supervisor memilih parameter: pH, BOD, Total Coliform.
**Hasil**:
- T1: Nitrat (Kimia, 1 botol), E. Coli (Biologi, 1 botol) → 2 botol.
- T2: pH (di TKP, 0 botol), BOD (BOD, 1 botol), Total Coliform (Biologi, 1 botol) → 2 botol.
### Langkah 3: Sistem Menghitung Total Botol dan Generate Barcode
**Tugas**:
- Sistem mengelompokkan parameter berdasarkan botol_kelompok:
- T1: Nitrat (Kimia) → Botol 1, E. Coli (Biologi) → Botol 2.
- T2: BOD (BOD) → Botol 1, Total Coliform (Biologi) → Botol 2.
- Total botol: 2 (T1) + 2 (T2) = 4 botol.
- Generate barcode:
- T1:
- Botol 1: WO-2025-016-20250516-AM-T1-01 (Nitrat).
- Botol 2: WO-2025-016-20250516-AM-T1-02 (E. Coli).
- T2:
- Botol 1: WO-2025-016-20250516-LD-T2-01 (BOD).
- Botol 2: WO-2025-016-20250516-LD-T2-02 (Total Coliform).
**Format Barcode**: `[WO-ID]-[YYYYMMDD]-[KODE_BAHAN_UJI]-[KODE_TITIK]-[NOMOR_BOTOL]`
### Langkah 4: Persiapan Peralatan dan Botol
**Tugas**:
- Sistem menampilkan kebutuhan:
- T1: Botol 1 (Kimia, 500 mL, asam nitrat), Botol 2 (Biologi, 500 mL, es).
- T2: Botol 1 (BOD, 500 mL, botol gelap), Botol 2 (Biologi, 500 mL, es).
- Supervisor menyiapkan:
- 4 botol berlabel barcode.
- Alat ukur: pH meter (untuk T2).
- Pengawet: asam nitrat, es, botol gelap.
**Hasil**:
- Paket tugas: 4 botol, alat ukur, pengawet.
### Langkah 5: Simpan Work Order ke Database
**Tugas**:
- Simpan ke database:
- tabel_tugas: Tugas ID, lokasi, tanggal.
- tabel_titik_sampel: Detail titik (T1, T2).
- tabel_botol_sampel: Barcode, parameter yang terkait.
### Langkah 6: Penyerahan Work Order ke Petugas
**Tugas**:
- Supervisor menyerahkan paket tugas:
- 4 botol berlabel.
- Alat ukur dan pengawet.
- Petugas memverifikasi dan berangkat ke lapangan.
### Langkah 7: Eksekusi di Lapangan
**Tugas**:
- Petugas tiba di lokasi dan melakukan pengukuran parameter di TKP:
- T2: Mengukur pH dengan pH meter, mencatat hasilnya.
- Mengambil sampel untuk parameter lain:
- T1: Nitrat (botol 1), E. Coli (botol 2).
- T2: BOD (botol 1), Total Coliform (botol 2).
- Mengisi metadata:
- Waktu pengambilan
- Kondisi cuaca
- Koordinat GPS
### Langkah 8: Pengiriman Sampel ke Laboratorium
**Tugas**:
- Petugas mengirimkan sampel ke laboratorium:
- 4 botol berlabel barcode dengan pengawetan yang sesuai.
- Form metadata pengambilan sampel.
### Langkah 9: Penerimaan Sampel di Laboratorium
**Tugas**:
- Staf Lab memverifikasi sampel yang diterima:
- Scan barcode untuk konfirmasi.
- Cek integritas sampel dan kondisi pengawetan.
- Update status di sistem: "Sampel diterima lab".
### Langkah 10: Analisis dan Pelaporan
**Tugas**:
- Lab melakukan analisis terhadap sampel:
- T1: Nitrat, E. Coli.
- T2: BOD, Total Coliform.
- Hasil diinput ke dalam sistem:
- Update status parameter di tabel_botol_sampel.
- Generate laporan hasil analisis.
## Contoh Data Detail untuk Work Order WO-2025-016
### 1. Data Detail Tugas
```json
{
"tugas_id": "WO-2025-016",
"lokasi": "Sungai Citarum",
"tanggal_tugas": "2025-05-16",
"jumlah_titik": 2,
"total_sampel": 4,
"status": "Direncanakan",
"created_at": "2025-05-16 09:20:00",
"created_by": "Supervisor_001"
}
```
### 2. Data Detail Titik Sampel
```json
[
{
"titik_id": 1,
"tugas_id": "WO-2025-016",
"kode_sampel": "WO-2025-016-T1",
"bahan_uji": {
"id": 5,
"nama": "Air Minum",
"kode": "AM"
},
"deskripsi_lokasi": "Hulu Sungai Citarum",
"parameter": [
{
"id": 12,
"nama": "Nitrat (NO3 terlarut)",
"botol_kelompok": "Kimia",
"diukur_di_tkp": false
},
{
"id": 24,
"nama": "E. Coli",
"botol_kelompok": "Biologi",
"diukur_di_tkp": false
}
],
"botol": [
{
"botol_id": 1,
"barcode": "WO-2025-016-20250516-AM-T1-01",
"botol_nomor": "01",
"botol_kelompok": "Kimia",
"volume": "500 mL",
"pengawetan": "Asam Nitrat",
"parameter": ["Nitrat (NO3 terlarut)"]
},
{
"botol_id": 2,
"barcode": "WO-2025-016-20250516-AM-T1-02",
"botol_nomor": "02",
"botol_kelompok": "Biologi",
"volume": "500 mL",
"pengawetan": "Disimpan dengan es",
"parameter": ["E. Coli"]
}
]
},
{
"titik_id": 2,
"tugas_id": "WO-2025-016",
"kode_sampel": "WO-2025-016-T2",
"bahan_uji": {
"id": 6,
"nama": "Limbah Domestik",
"kode": "LD"
},
"deskripsi_lokasi": "Outlet Pabrik Tekstil",
"parameter": [
{
"id": 27,
"nama": "pH",
"botol_kelompok": null,
"diukur_di_tkp": true
},
{
"id": 28,
"nama": "BOD",
"botol_kelompok": "BOD",
"diukur_di_tkp": false
},
{
"id": 34,
"nama": "Total Coliform",
"botol_kelompok": "Biologi",
"diukur_di_tkp": false
}
],
"botol": [
{
"botol_id": 3,
"barcode": "WO-2025-016-20250516-LD-T2-01",
"botol_nomor": "01",
"botol_kelompok": "BOD",
"volume": "500 mL",
"pengawetan": "Botol Gelap",
"parameter": ["BOD"]
},
{
"botol_id": 4,
"barcode": "WO-2025-016-20250516-LD-T2-02",
"botol_nomor": "02",
"botol_kelompok": "Biologi",
"volume": "500 mL",
"pengawetan": "Disimpan dengan es",
"parameter": ["Total Coliform"]
}
]
}
]
```
### 3. Data Hasil Pengukuran TKP
```json
[
{
"pengukuran_id": 1,
"titik_id": 2,
"parameter_id": 27,
"parameter_nama": "pH",
"nilai": "7.2",
"satuan": "-",
"waktu_pengukuran": "2025-05-16 13:45:00",
"petugas": "Petugas_002",
"keterangan": "Kondisi cuaca cerah"
}
]
```
### 4. Data Hasil Analisis Laboratorium
```json
[
{
"analisis_id": 1,
"botol_id": 1,
"parameter_id": 12,
"parameter_nama": "Nitrat (NO3 terlarut)",
"hasil": "3.2",
"satuan": "mg/L",
"metode": "SNI/APHA",
"waktu_analisis": "2025-05-17 10:30:00",
"analis": "Lab_001",
"status": "Selesai",
"keterangan": "Di bawah baku mutu"
},
{
"analisis_id": 2,
"botol_id": 2,
"parameter_id": 24,
"parameter_nama": "E. Coli",
"hasil": "0",
"satuan": "MPN/100mL",
"metode": "SNI/APHA",
"waktu_analisis": "2025-05-17 14:20:00",
"analis": "Lab_002",
"status": "Selesai",
"keterangan": "Tidak terdeteksi"
},
{
"analisis_id": 3,
"botol_id": 3,
"parameter_id": 28,
"parameter_nama": "BOD",
"hasil": "125",
"satuan": "mg/L",
"metode": "APHA 5210 B-2017",
"waktu_analisis": "2025-05-22 09:15:00",
"analis": "Lab_003",
"status": "Selesai",
"keterangan": "Melebihi baku mutu"
},
{
"analisis_id": 4,
"botol_id": 4,
"parameter_id": 34,
"parameter_nama": "Total Coliform",
"hasil": "1600",
"satuan": "MPN/100mL",
"metode": "SNI",
"waktu_analisis": "2025-05-18 11:40:00",
"analis": "Lab_002",
"status": "Selesai",
"keterangan": "Melebihi baku mutu"
}
]
```
## Proses Cetak Laporan
Setelah semua analisis selesai, sistem dapat mencetak laporan hasil pengujian yang mencakup:
1. Informasi Work Order
2. Informasi Titik Sampel
3. Hasil Pengukuran di TKP
4. Hasil Analisis Laboratorium
5. Perbandingan dengan Baku Mutu
6. Tanda Tangan Penanggung Jawab
Dengan format barcode yang telah ditentukan, sistem dapat dengan mudah melacak sampel dari pengambilan hingga pelaporan hasil.