Files
LAB_LINGKUNGAN/lab_env_database_structure.sql
2025-04-25 10:35:39 +07:00

521 lines
26 KiB
SQL

-- Database Structure for Environmental Laboratory Management System
-- Based on the workflow diagram provided
-- Create database
CREATE DATABASE IF NOT EXISTS lab_lingkungan;
USE lab_lingkungan;
-- Customers table (Internal and External)
CREATE TABLE customers (
CustomerID INT AUTO_INCREMENT PRIMARY KEY,
CustomerName VARCHAR(100) NOT NULL,
CustomerType ENUM('Internal', 'External') NOT NULL,
CustomerContactPerson VARCHAR(100),
CustomerPhoneNumber VARCHAR(20),
CustomerEmail VARCHAR(100),
CustomerAddress TEXT,
CustomerCompanyName VARCHAR(100),
CustomerCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
CustomerCreatedUserID INT,
CustomerUpdatedAt DATETIME,
CustomerUpdatedUserID INT,
CustomerDeletedAt DATETIME,
CustomerDeletedUserID INT
);
-- Sample Types table
CREATE TABLE sample_types (
SampleTypeID INT AUTO_INCREMENT PRIMARY KEY,
SampleTypeName VARCHAR(100) NOT NULL,
SampleTypeDescription TEXT,
SampleTypeStandardMethod TEXT,
SampleTypeIsActive BOOLEAN DEFAULT TRUE,
SampleTypeCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
SampleTypeCreatedUserID INT,
SampleTypeUpdatedAt DATETIME,
SampleTypeUpdatedUserID INT,
SampleTypeDeletedAt DATETIME,
SampleTypeDeletedUserID INT
);
-- Analysis Parameters table
CREATE TABLE analysis_parameters (
AnalysisParameterID INT AUTO_INCREMENT PRIMARY KEY,
AnalysisParameterName VARCHAR(100) NOT NULL,
AnalysisParameterUnit VARCHAR(50),
AnalysisParameterMethod VARCHAR(100),
SampleTypeID INT,
AnalysisParameterStandardValue VARCHAR(100),
AnalysisParameterPrice DECIMAL(10, 2),
AnalysisParameterIsActive BOOLEAN DEFAULT TRUE,
AnalysisParameterCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
AnalysisParameterCreatedUserID INT,
AnalysisParameterUpdatedAt DATETIME,
AnalysisParameterUpdatedUserID INT,
AnalysisParameterDeletedAt DATETIME,
AnalysisParameterDeletedUserID INT
);
-- Service Requests table
CREATE TABLE service_requests (
ServiceRequestID INT AUTO_INCREMENT PRIMARY KEY,
CustomerID INT NOT NULL,
ServiceRequestDate DATETIME DEFAULT CURRENT_TIMESTAMP,
ServiceRequestType ENUM('Sampling and Analysis', 'Analysis Only') NOT NULL,
ServiceRequestProjectName VARCHAR(200),
ServiceRequestProjectLocation TEXT,
ServiceRequestStatus ENUM('Draft', 'Submitted', 'Quotation Sent', 'Approved', 'Rejected', 'Completed', 'Cancelled') DEFAULT 'Draft',
ServiceRequestAdminID INT,
ServiceRequestQuotationNumber VARCHAR(50),
ServiceRequestQuotationDate DATE,
ServiceRequestApprovedDate DATE,
ServiceRequestPaymentProof VARCHAR(255),
ServiceRequestPaymentDate DATE,
ServiceRequestTotalAmount DECIMAL(12, 2),
ServiceRequestNotes TEXT,
ServiceRequestCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
ServiceRequestCreatedUserID INT,
ServiceRequestUpdatedAt DATETIME,
ServiceRequestUpdatedUserID INT,
ServiceRequestDeletedAt DATETIME,
ServiceRequestDeletedUserID INT
);
-- Request Parameters (mapping between requests and required parameters)
CREATE TABLE request_parameters (
request_parameter_id INT AUTO_INCREMENT PRIMARY KEY,
request_id INT NOT NULL,
parameter_id INT NOT NULL,
quantity INT DEFAULT 1,
price_per_unit DECIMAL(10, 2),
FOREIGN KEY (request_id) REFERENCES service_requests(request_id),
FOREIGN KEY (parameter_id) REFERENCES analysis_parameters(parameter_id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Sampling Plans table
CREATE TABLE sampling_plans (
plan_id INT AUTO_INCREMENT PRIMARY KEY,
request_id INT NOT NULL,
planned_date DATE NOT NULL,
location TEXT NOT NULL,
coordinates VARCHAR(100),
sampling_method TEXT,
equipment_needed TEXT,
sampling_officer_id INT,
status ENUM('Planned', 'Confirmed', 'Completed', 'Cancelled') DEFAULT 'Planned',
notes TEXT,
FOREIGN KEY (request_id) REFERENCES service_requests(request_id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Samples table
CREATE TABLE samples (
sample_id INT AUTO_INCREMENT PRIMARY KEY,
request_id INT NOT NULL,
plan_id INT,
sample_code VARCHAR(50) NOT NULL,
sample_type_id INT NOT NULL,
sampling_date DATETIME,
sampling_location TEXT,
sampling_officer_id INT,
received_date DATETIME,
received_by INT,
sample_condition TEXT,
preparation_notes TEXT,
preservation_method TEXT,
status ENUM('Planned', 'Collected', 'Received', 'In Preparation', 'In Analysis', 'Analysis Complete', 'Verified', 'Reported') DEFAULT 'Planned',
FOREIGN KEY (request_id) REFERENCES service_requests(request_id),
FOREIGN KEY (plan_id) REFERENCES sampling_plans(plan_id),
FOREIGN KEY (sample_type_id) REFERENCES sample_types(sample_type_id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Analysis Results table
CREATE TABLE analysis_results (
result_id INT AUTO_INCREMENT PRIMARY KEY,
sample_id INT NOT NULL,
parameter_id INT NOT NULL,
analyst_id INT,
analysis_date DATETIME,
result_value VARCHAR(100),
unit VARCHAR(50),
method_used VARCHAR(100),
is_within_standard BOOLEAN,
notes TEXT,
status ENUM('Planned', 'In Progress', 'Completed', 'Verified', 'Rejected') DEFAULT 'Planned',
verified_by INT,
verification_date DATETIME,
FOREIGN KEY (sample_id) REFERENCES samples(sample_id),
FOREIGN KEY (parameter_id) REFERENCES analysis_parameters(parameter_id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Reports table
CREATE TABLE reports (
report_id INT AUTO_INCREMENT PRIMARY KEY,
request_id INT NOT NULL,
report_number VARCHAR(50) NOT NULL,
report_date DATE NOT NULL,
prepared_by INT,
verified_by INT,
approved_by INT,
status ENUM('Draft', 'Verified', 'Approved', 'Sent', 'Received') DEFAULT 'Draft',
file_path VARCHAR(255),
notes TEXT,
FOREIGN KEY (request_id) REFERENCES service_requests(request_id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Users table (Staff)
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
full_name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
role ENUM('Admin', 'Sampling Officer', 'Lab Analyst', 'Verification Officer', 'Manager') NOT NULL,
department VARCHAR(100),
is_active BOOLEAN DEFAULT TRUE,
last_login DATETIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Activity Logs table
CREATE TABLE activity_logs (
log_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
action VARCHAR(255) NOT NULL,
table_name VARCHAR(100),
record_id INT,
details TEXT,
ip_address VARCHAR(45),
user_agent TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
-- Master Sampling Methods
CREATE TABLE master_sampling_methods (
MasterSamplingMethodID INT PRIMARY KEY AUTO_INCREMENT,
MasterSamplingMethodCode VARCHAR(20) NOT NULL,
MasterSamplingMethodName VARCHAR(100) NOT NULL,
MasterSamplingMethodStandardRef VARCHAR(100),
MasterSamplingMethodMatrix VARCHAR(50),
MasterSamplingMethodDescription TEXT,
MasterSamplingMethodEquipment TEXT,
MasterSamplingMethodProcedure TEXT,
MasterSamplingMethodQCRequirements TEXT,
MasterSamplingMethodSamplingPoint TEXT,
MasterSamplingMethodPreservation TEXT,
MasterSamplingMethodContainerType VARCHAR(100),
MasterSamplingMethodMinVolume DECIMAL(10,2),
MasterSamplingMethodHoldingTime VARCHAR(50),
MasterSamplingMethodInterference TEXT,
MasterSamplingMethodLimitation TEXT,
MasterSamplingMethodSafetyMeasures TEXT,
MasterSamplingMethodFieldParameters TEXT,
MasterSamplingMethodSamplingFrequency VARCHAR(100),
MasterSamplingMethodWeatherRequirement TEXT,
MasterSamplingMethodQualityControl TEXT,
MasterSamplingMethodReportingRequirement TEXT,
MasterSamplingMethodIsActive BOOLEAN DEFAULT TRUE,
MasterSamplingMethodCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
MasterSamplingMethodCreatedUserID INT,
MasterSamplingMethodUpdatedAt DATETIME,
MasterSamplingMethodUpdatedUserID INT,
MasterSamplingMethodDeletedAt DATETIME,
MasterSamplingMethodDeletedUserID INT
);
-- Master Sampling Method Parameters (Parameter yang bisa diuji dengan metode sampling ini)
CREATE TABLE master_sampling_method_parameters (
MasterSamplingMethodParameterID INT PRIMARY KEY AUTO_INCREMENT,
MasterSamplingMethodID INT,
MasterParameterID INT,
MasterSamplingMethodParameterIsDefault BOOLEAN DEFAULT FALSE,
MasterSamplingMethodParameterIsActive BOOLEAN DEFAULT TRUE,
MasterSamplingMethodParameterCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
MasterSamplingMethodParameterCreatedUserID INT,
MasterSamplingMethodParameterUpdatedAt DATETIME,
MasterSamplingMethodParameterUpdatedUserID INT,
MasterSamplingMethodParameterDeletedAt DATETIME,
MasterSamplingMethodParameterDeletedUserID INT
);
-- Master Sampling Method Equipment (Peralatan yang dibutuhkan untuk metode sampling ini)
CREATE TABLE master_sampling_method_equipment (
MasterSamplingMethodEquipmentID INT PRIMARY KEY AUTO_INCREMENT,
MasterSamplingMethodID INT,
MasterEquipmentID INT,
MasterSamplingMethodEquipmentQuantity INT,
MasterSamplingMethodEquipmentIsRequired BOOLEAN DEFAULT TRUE,
MasterSamplingMethodEquipmentNotes TEXT,
MasterSamplingMethodEquipmentIsActive BOOLEAN DEFAULT TRUE,
MasterSamplingMethodEquipmentCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
MasterSamplingMethodEquipmentCreatedUserID INT,
MasterSamplingMethodEquipmentUpdatedAt DATETIME,
MasterSamplingMethodEquipmentUpdatedUserID INT,
MasterSamplingMethodEquipmentDeletedAt DATETIME,
MasterSamplingMethodEquipmentDeletedUserID INT
);
-- Master Sampling Method Competencies (Kompetensi yang dibutuhkan untuk metode sampling ini)
CREATE TABLE master_sampling_method_competencies (
MasterSamplingMethodCompetencyID INT PRIMARY KEY AUTO_INCREMENT,
MasterSamplingMethodID INT,
MasterCompetencyID INT,
MasterSamplingMethodCompetencyIsRequired BOOLEAN DEFAULT TRUE,
MasterSamplingMethodCompetencyNotes TEXT,
MasterSamplingMethodCompetencyIsActive BOOLEAN DEFAULT TRUE,
MasterSamplingMethodCompetencyCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
MasterSamplingMethodCompetencyCreatedUserID INT,
MasterSamplingMethodCompetencyUpdatedAt DATETIME,
MasterSamplingMethodCompetencyUpdatedUserID INT,
MasterSamplingMethodCompetencyDeletedAt DATETIME,
MasterSamplingMethodCompetencyDeletedUserID INT
);
-- Insert sample data for testing
-- Sample Users
INSERT INTO users (username, password, full_name, email, role, department) VALUES
('admin1', '$2y$10$somehashedpassword1', 'Administrator 1', 'admin1@lab.com', 'Admin', 'Administration'),
('sampler1', '$2y$10$somehashedpassword2', 'Sampling Officer 1', 'sampler1@lab.com', 'Sampling Officer', 'Field Operations'),
('analyst1', '$2y$10$somehashedpassword3', 'Lab Analyst 1', 'analyst1@lab.com', 'Lab Analyst', 'Laboratory'),
('verifier1', '$2y$10$somehashedpassword4', 'Verification Officer 1', 'verifier1@lab.com', 'Verification Officer', 'Quality Control'),
('manager1', '$2y$10$somehashedpassword5', 'Manager 1', 'manager1@lab.com', 'Manager', 'Management');
-- Sample Types
INSERT INTO sample_types (type_name, description, standard_method) VALUES
('Air Limbah', 'Sampel air limbah dari industri atau fasilitas', 'SNI 6989.59:2008'),
('Air Permukaan', 'Sampel air sungai, danau, atau badan air lainnya', 'SNI 6989.57:2008'),
('Air Tanah', 'Sampel air dari sumur atau mata air', 'SNI 6989.58:2008'),
('Tanah', 'Sampel tanah untuk analisis parameter lingkungan', 'SNI 8520:2018'),
('Udara Ambien', 'Sampel udara ambient untuk analisis kualitas udara', 'SNI 7119:2017');
-- Analysis Parameters
INSERT INTO analysis_parameters (parameter_name, unit, method, sample_type_id, standard_value, price) VALUES
('pH', '-', 'SNI 06-6989.11-2004', 1, '6-9', 50000.00),
('TSS', 'mg/L', 'SNI 06-6989.3-2004', 1, '100', 75000.00),
('COD', 'mg/L', 'SNI 6989.73:2009', 1, '100', 125000.00),
('BOD', 'mg/L', 'SNI 6989.72:2009', 1, '30', 150000.00),
('Ammonia', 'mg/L', 'SNI 06-6989.30-2005', 1, '10', 100000.00),
('Logam Berat Pb', 'mg/L', 'SNI 6989.8:2009', 1, '0.1', 200000.00),
('Total Coliform', 'MPN/100mL', 'SNI 01-2897-1992', 2, '1000', 175000.00),
('DO', 'mg/L', 'SNI 06-6989.14-2004', 2, '4', 80000.00),
('Sulfida', 'mg/L', 'SNI 6989.70:2009', 1, '0.5', 125000.00),
('Minyak & Lemak', 'mg/L', 'SNI 6989.10:2011', 1, '10', 150000.00);
-- Sample Customers
INSERT INTO customers (customer_name, customer_type, contact_person, phone_number, email, address, company_name) VALUES
('PT. Industri Tekstil Nusantara', 'External', 'Budi Santoso', '08123456789', 'budi@tekstilnusantara.com', 'Jl. Industri No. 123, Bandung', 'PT. Industri Tekstil Nusantara'),
('Dinas Lingkungan Hidup Kota', 'External', 'Siti Aminah', '08765432100', 'siti@dlh.kotabjb.go.id', 'Jl. Pemkot No. 45, Kota BJB', 'Dinas Lingkungan Hidup Kota BJB'),
('Departemen Produksi', 'Internal', 'Rudi Hartono', '08567891234', 'rudi@internal.lab.com', 'Gedung Utama Lt. 2, Lab Lingkungan', 'Lab Lingkungan'),
('PT. Kimia Farma', 'External', 'Diana Putri', '08123456790', 'diana@kimiafarma.co.id', 'Jl. Pahlawan No. 67, Jakarta', 'PT. Kimia Farma'),
('Departemen R&D', 'Internal', 'Hendra Wijaya', '08567891235', 'hendra@internal.lab.com', 'Gedung Riset Lt. 3, Lab Lingkungan', 'Lab Lingkungan');
-- Sample Service Requests
INSERT INTO service_requests (customer_id, request_type, project_name, project_location, status, quotation_number, quotation_date, approved_date, total_amount) VALUES
(1, 'Sampling and Analysis', 'Pemantauan Limbah Triwulan I 2025', 'Pabrik Tekstil Bandung', 'Approved', 'Q-2025-001', '2025-01-15', '2025-01-20', 2500000.00),
(2, 'Sampling and Analysis', 'Monitoring Kualitas Air Sungai Citarum', 'Sungai Citarum, 5 titik sampling', 'Completed', 'Q-2025-002', '2025-02-10', '2025-02-15', 3750000.00),
(3, 'Analysis Only', 'Analisis Limbah Internal Bulanan', 'IPAL Gedung Utama', 'In Progress', 'Q-2025-003', '2025-03-05', '2025-03-07', 1250000.00),
(4, 'Sampling and Analysis', 'Audit Lingkungan Semester I', 'Pabrik Farmasi Jakarta', 'Quotation Sent', 'Q-2025-004', '2025-03-20', NULL, 4500000.00),
(5, 'Analysis Only', 'Pengujian Efisiensi Filter Karbon', 'Lab R&D', 'Submitted', NULL, NULL, NULL, NULL);
-- Sample Request Parameters
INSERT INTO request_parameters (request_id, parameter_id, quantity, price_per_unit) VALUES
(1, 1, 1, 50000.00), -- pH for Request 1
(1, 2, 1, 75000.00), -- TSS for Request 1
(1, 3, 1, 125000.00), -- COD for Request 1
(1, 4, 1, 150000.00), -- BOD for Request 1
(1, 5, 1, 100000.00), -- Ammonia for Request 1
(2, 1, 5, 50000.00), -- pH for Request 2 (5 titik)
(2, 2, 5, 75000.00), -- TSS for Request 2 (5 titik)
(2, 7, 5, 175000.00), -- Total Coliform for Request 2 (5 titik)
(2, 8, 5, 80000.00), -- DO for Request 2 (5 titik)
(3, 1, 1, 50000.00), -- pH for Request 3
(3, 2, 1, 75000.00), -- TSS for Request 3
(3, 3, 1, 125000.00), -- COD for Request 3
(3, 4, 1, 150000.00), -- BOD for Request 3
(4, 1, 3, 50000.00), -- pH for Request 4 (3 titik)
(4, 2, 3, 75000.00), -- TSS for Request 4 (3 titik)
(4, 3, 3, 125000.00), -- COD for Request 4 (3 titik)
(4, 4, 3, 150000.00), -- BOD for Request 4 (3 titik)
(4, 6, 3, 200000.00), -- Logam Berat Pb for Request 4 (3 titik)
(4, 9, 3, 125000.00), -- Sulfida for Request 4 (3 titik)
(4, 10, 3, 150000.00);-- Minyak & Lemak for Request 4 (3 titik)
-- Sample Sampling Plans
INSERT INTO sampling_plans (request_id, planned_date, location, coordinates, sampling_method, equipment_needed, sampling_officer_id, status) VALUES
(1, '2025-01-25', 'Outlet IPAL PT. Industri Tekstil Nusantara', '-6.914744, 107.609810', 'Grab Sampling sesuai SNI 6989.59:2008', 'Botol sampling, pH meter, termometer, cool box', 2, 'Completed'),
(2, '2025-02-20', 'Sungai Citarum - Titik 1 (Hulu)', '-6.947890, 107.632505', 'Grab Sampling sesuai SNI 6989.57:2008', 'Botol sampling, pH meter, DO meter, termometer, cool box', 2, 'Completed'),
(2, '2025-02-20', 'Sungai Citarum - Titik 2', '-6.933456, 107.621234', 'Grab Sampling sesuai SNI 6989.57:2008', 'Botol sampling, pH meter, DO meter, termometer, cool box', 2, 'Completed'),
(2, '2025-02-20', 'Sungai Citarum - Titik 3', '-6.925678, 107.612345', 'Grab Sampling sesuai SNI 6989.57:2008', 'Botol sampling, pH meter, DO meter, termometer, cool box', 2, 'Completed'),
(2, '2025-02-20', 'Sungai Citarum - Titik 4', '-6.912345, 107.603456', 'Grab Sampling sesuai SNI 6989.57:2008', 'Botol sampling, pH meter, DO meter, termometer, cool box', 2, 'Completed'),
(2, '2025-02-20', 'Sungai Citarum - Titik 5 (Hilir)', '-6.901234, 107.594567', 'Grab Sampling sesuai SNI 6989.57:2008', 'Botol sampling, pH meter, DO meter, termometer, cool box', 2, 'Completed'),
(4, '2025-04-05', 'Outlet IPAL PT. Kimia Farma', '-6.186486, 106.834091', 'Grab Sampling sesuai SNI 6989.59:2008', 'Botol sampling, pH meter, termometer, cool box', 2, 'Planned'),
(4, '2025-04-05', 'Area Produksi PT. Kimia Farma', '-6.186123, 106.833987', 'Grab Sampling sesuai SNI 6989.59:2008', 'Botol sampling, pH meter, termometer, cool box', 2, 'Planned'),
(4, '2025-04-05', 'Area Penyimpanan Bahan Baku PT. Kimia Farma', '-6.185789, 106.834567', 'Grab Sampling sesuai SNI 6989.59:2008', 'Botol sampling, pH meter, termometer, cool box', 2, 'Planned');
-- Sample Samples
INSERT INTO samples (request_id, plan_id, sample_code, sample_type_id, sampling_date, sampling_location, sampling_officer_id, received_date, received_by, sample_condition, preparation_notes, status) VALUES
(1, 1, 'ITN-2025-001', 1, '2025-01-25 10:15:00', 'Outlet IPAL PT. Industri Tekstil Nusantara', 2, '2025-01-25 15:30:00', 3, 'Baik, suhu 20°C', 'Sampel disaring untuk analisis TSS', 'Analysis Complete'),
(2, 2, 'SC-H-2025-001', 2, '2025-02-20 08:30:00', 'Sungai Citarum - Titik 1 (Hulu)', 2, '2025-02-20 16:00:00', 3, 'Baik, suhu 19°C', 'Sampel diawetkan dengan H₂SO₄ untuk COD', 'Analysis Complete'),
(2, 3, 'SC-2-2025-002', 2, '2025-02-20 09:45:00', 'Sungai Citarum - Titik 2', 2, '2025-02-20 16:00:00', 3, 'Baik, suhu 19°C', 'Sampel diawetkan dengan H₂SO₄ untuk COD', 'Analysis Complete'),
(2, 4, 'SC-3-2025-003', 2, '2025-02-20 11:00:00', 'Sungai Citarum - Titik 3', 2, '2025-02-20 16:00:00', 3, 'Baik, suhu 20°C', 'Sampel diawetkan dengan H₂SO₄ untuk COD', 'Analysis Complete'),
(2, 5, 'SC-4-2025-004', 2, '2025-02-20 13:15:00', 'Sungai Citarum - Titik 4', 2, '2025-02-20 16:00:00', 3, 'Baik, suhu 20°C', 'Sampel diawetkan dengan H₂SO₄ untuk COD', 'Analysis Complete'),
(2, 6, 'SC-I-2025-005', 2, '2025-02-20 14:30:00', 'Sungai Citarum - Titik 5 (Hilir)', 2, '2025-02-20 16:00:00', 3, 'Baik, suhu 21°C', 'Sampel diawetkan dengan H₂SO₄ untuk COD', 'Analysis Complete'),
(3, NULL, 'INT-2025-001', 1, NULL, 'IPAL Gedung Utama', NULL, '2025-03-10 10:00:00', 3, 'Baik, suhu 22°C', 'Sampel dikirim oleh Departemen Produksi', 'In Analysis');
-- Sample Analysis Results (for request 1 and 2)
INSERT INTO analysis_results (sample_id, parameter_id, analyst_id, analysis_date, result_value, unit, method_used, is_within_standard, status, verified_by, verification_date) VALUES
(1, 1, 3, '2025-01-26 09:00:00', '7.6', '-', 'SNI 06-6989.11-2004', TRUE, 'Verified', 4, '2025-01-27 10:00:00'),
(1, 2, 3, '2025-01-26 11:00:00', '45', 'mg/L', 'SNI 06-6989.3-2004', TRUE, 'Verified', 4, '2025-01-27 10:00:00'),
(1, 3, 3, '2025-01-26 13:00:00', '87', 'mg/L', 'SNI 6989.73:2009', TRUE, 'Verified', 4, '2025-01-27 10:00:00'),
(1, 4, 3, '2025-01-26 15:00:00', '28', 'mg/L', 'SNI 6989.72:2009', TRUE, 'Verified', 4, '2025-01-27 10:00:00'),
(1, 5, 3, '2025-01-26 16:00:00', '3.5', 'mg/L', 'SNI 06-6989.30-2005', TRUE, 'Verified', 4, '2025-01-27 10:00:00'),
(2, 1, 3, '2025-02-21 09:00:00', '7.2', '-', 'SNI 06-6989.11-2004', TRUE, 'Verified', 4, '2025-02-22 11:00:00'),
(2, 2, 3, '2025-02-21 11:00:00', '12', 'mg/L', 'SNI 06-6989.3-2004', TRUE, 'Verified', 4, '2025-02-22 11:00:00'),
(2, 7, 3, '2025-02-21 13:00:00', '210', 'MPN/100mL', 'SNI 01-2897-1992', TRUE, 'Verified', 4, '2025-02-22 11:00:00'),
(2, 8, 3, '2025-02-21 15:00:00', '5.6', 'mg/L', 'SNI 06-6989.14-2004', TRUE, 'Verified', 4, '2025-02-22 11:00:00'),
(3, 1, 3, '2025-02-21 09:30:00', '7.1', '-', 'SNI 06-6989.11-2004', TRUE, 'Verified', 4, '2025-02-22 11:00:00'),
(3, 2, 3, '2025-02-21 11:30:00', '18', 'mg/L', 'SNI 06-6989.3-2004', TRUE, 'Verified', 4, '2025-02-22 11:00:00'),
(3, 7, 3, '2025-02-21 13:30:00', '320', 'MPN/100mL', 'SNI 01-2897-1992', TRUE, 'Verified', 4, '2025-02-22 11:00:00'),
(3, 8, 3, '2025-02-21 15:30:00', '5.2', 'mg/L', 'SNI 06-6989.14-2004', TRUE, 'Verified', 4, '2025-02-22 11:00:00');
-- Sample Reports
INSERT INTO reports (request_id, report_number, report_date, prepared_by, verified_by, approved_by, status, file_path) VALUES
(1, 'LHU-2025-001', '2025-01-29', 3, 4, 5, 'Sent', '/reports/2025/LHU-2025-001.pdf'),
(2, 'LHU-2025-002', '2025-02-25', 3, 4, 5, 'Sent', '/reports/2025/LHU-2025-002.pdf');
-- Sample Activity Logs
INSERT INTO activity_logs (user_id, action, table_name, record_id, details, ip_address) VALUES
(1, 'CREATE', 'service_requests', 1, 'Created new service request for PT. Industri Tekstil Nusantara', '192.168.1.100'),
(1, 'UPDATE', 'service_requests', 1, 'Updated status to Approved', '192.168.1.100'),
(2, 'CREATE', 'sampling_plans', 1, 'Created sampling plan for request #1', '192.168.1.101'),
(2, 'CREATE', 'samples', 1, 'Collected sample ITN-2025-001', '192.168.1.101'),
(3, 'UPDATE', 'samples', 1, 'Sample received at laboratory', '192.168.1.102'),
(3, 'CREATE', 'analysis_results', 1, 'Recorded pH analysis result', '192.168.1.102'),
(4, 'UPDATE', 'analysis_results', 1, 'Verified analysis result', '192.168.1.103'),
(5, 'CREATE', 'reports', 1, 'Created report LHU-2025-001', '192.168.1.104');
-- Insert contoh data Master Sampling Methods
INSERT INTO master_sampling_methods (
MasterSamplingMethodID,
MasterSamplingMethodCode,
MasterSamplingMethodName,
MasterSamplingMethodStandardRef,
MasterSamplingMethodMatrix,
MasterSamplingMethodDescription,
MasterSamplingMethodEquipment,
MasterSamplingMethodProcedure,
MasterSamplingMethodQCRequirements,
MasterSamplingMethodSamplingPoint,
MasterSamplingMethodPreservation,
MasterSamplingMethodContainerType,
MasterSamplingMethodMinVolume,
MasterSamplingMethodHoldingTime,
MasterSamplingMethodSafetyMeasures,
MasterSamplingMethodFieldParameters,
MasterSamplingMethodCreatedUserID
) VALUES
(1, 'WW-GRAB', 'Grab Sampling Air Limbah',
'SNI 6989.59:2008',
'Air Limbah',
'Pengambilan sampel sesaat untuk pemantauan kualitas air limbah',
'Water sampler, botol sampel, pH meter, termometer',
'Bilas alat 3x, sampling pada kedalaman 30cm dari permukaan',
'Field duplicate 10%, field blank harian',
'Inlet dan outlet IPAL, titik penaatan',
'H2SO4 untuk COD/BOD, HNO3 untuk logam',
'Polyethylene untuk umum, kaca untuk minyak lemak',
2.50,
'24 jam pada 4°C',
'APD standar: safety shoes, sarung tangan, masker',
'pH, suhu, debit',
1),
(2, 'EMI-ISO', 'Isokinetic Sampling Emisi',
'SNI 7117.2:2009',
'Emisi Udara',
'Pengambilan sampel isokinetik pada cerobong industri',
'Isokinetic sampling kit, filter holder, pitot tube',
'Tentukan titik grid, sampling minimal 1 jam per titik',
'Leak check pre/post sampling, blanko filter',
'Minimal 8 titik pada 2 diameter berbeda',
'Tidak ada',
'Filter fiber glass',
0.00,
'Analisis dalam 48 jam',
'Full APD: safety shoes, helm, masker full face',
'Temperatur, tekanan, kecepatan',
1);
-- 2. Master Sampling Method Parameters
INSERT INTO master_sampling_method_parameters (
MasterSamplingMethodParameterID,
MasterSamplingMethodID,
MasterParameterID,
MasterSamplingMethodParameterIsDefault,
MasterSamplingMethodParameterCreatedUserID
) VALUES
-- Untuk Air Limbah (WW-GRAB)
(1, 1, 1, TRUE, 1), -- pH
(2, 1, 2, TRUE, 1), -- BOD
(3, 1, 3, TRUE, 1), -- COD
(4, 1, 4, TRUE, 1), -- TSS
(5, 1, 5, FALSE, 1), -- Minyak & Lemak
-- Untuk Emisi (EMI-ISO)
(6, 2, 10, TRUE, 1), -- Partikulat
(7, 2, 11, TRUE, 1), -- SO2
(8, 2, 12, TRUE, 1), -- NOx
(9, 2, 13, FALSE, 1); -- CO
-- 3. Master Sampling Method Equipment
INSERT INTO master_sampling_method_equipment (
MasterSamplingMethodEquipmentID,
MasterSamplingMethodID,
MasterEquipmentID,
MasterSamplingMethodEquipmentQuantity,
MasterSamplingMethodEquipmentIsRequired,
MasterSamplingMethodEquipmentNotes,
MasterSamplingMethodEquipmentCreatedUserID
) VALUES
-- Untuk Air Limbah (WW-GRAB)
(1, 1, 1, 1, TRUE, 'Water sampler volume 1L', 1),
(2, 1, 2, 2, TRUE, 'Botol PE 2L', 1),
(3, 1, 3, 1, TRUE, 'pH meter portable', 1),
(4, 1, 4, 1, TRUE, 'Termometer', 1),
(5, 1, 5, 1, FALSE, 'Cool box', 1),
-- Untuk Emisi (EMI-ISO)
(6, 2, 10, 1, TRUE, 'Isokinetic sampling kit', 1),
(7, 2, 11, 1, TRUE, 'Filter holder diameter 47mm', 1),
(8, 2, 12, 1, TRUE, 'Pitot tube tipe S', 1),
(9, 2, 13, 1, FALSE, 'Termometer cerobong', 1);
-- 4. Master Sampling Method Competencies
INSERT INTO master_sampling_method_competencies (
MasterSamplingMethodCompetencyID,
MasterSamplingMethodID,
MasterCompetencyID,
MasterSamplingMethodCompetencyIsRequired,
MasterSamplingMethodCompetencyNotes,
MasterSamplingMethodCompetencyCreatedUserID
) VALUES
-- Untuk Air Limbah (WW-GRAB)
(1, 1, 1, TRUE, 'Sertifikat sampling air limbah', 1),
(2, 1, 2, TRUE, 'Pelatihan K3 dasar', 1),
(3, 1, 3, FALSE, 'Pelatihan analisis lapangan', 1),
-- Untuk Emisi (EMI-ISO)
(4, 2, 4, TRUE, 'Sertifikat sampling emisi', 1),
(5, 2, 5, TRUE, 'Sertifikat bekerja di ketinggian', 1),
(6, 2, 6, TRUE, 'Pelatihan K3 lanjutan', 1);