diff --git a/wm-production/src/main/java/com/water/production/entity/AlertRecord.java b/wm-production/src/main/java/com/water/production/entity/AlertRecord.java new file mode 100644 index 00000000..7fb45672 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/entity/AlertRecord.java @@ -0,0 +1,13 @@ +package com.water.production.entity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; import java.time.LocalDateTime; +@Data @TableName("prod_alert_record") +public class AlertRecord { + @TableId(type = IdType.AUTO) private Long id; + private String deviceId, area, level; // 一般/重要/紧急 + private String alertType, description; + private Integer status; // 0活跃 1已确认 2已处理 + private Long confirmedBy, handledBy; + @TableField(fill=FieldFill.INSERT) private LocalDateTime createdTime; + private LocalDateTime confirmedTime, handledTime; +} diff --git a/wm-production/src/main/java/com/water/production/entity/DeviceStatus.java b/wm-production/src/main/java/com/water/production/entity/DeviceStatus.java new file mode 100644 index 00000000..4237b952 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/entity/DeviceStatus.java @@ -0,0 +1,11 @@ +package com.water.production.entity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; import java.time.LocalDateTime; +@Data @TableName("prod_device_status") +public class DeviceStatus { + @TableId(type = IdType.AUTO) private Long id; + private String deviceId, deviceName, deviceType; + private String area; private Integer status; // 0离线 1在线 2故障 + private Double lng, lat; + private LocalDateTime lastOnlineTime; +} diff --git a/wm-production/src/main/java/com/water/production/entity/FlowPressureMonitor.java b/wm-production/src/main/java/com/water/production/entity/FlowPressureMonitor.java new file mode 100644 index 00000000..4fdc3659 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/entity/FlowPressureMonitor.java @@ -0,0 +1,11 @@ +package com.water.production.entity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; import java.time.LocalDateTime; +@Data @TableName("prod_flow_pressure") +public class FlowPressureMonitor { + @TableId(type = IdType.AUTO) private Long id; + private String deviceId, area, positionType; // 流量/压力/液位 + private Double value; private String unit; + private Double lng, lat; + @TableField(fill=FieldFill.INSERT) private LocalDateTime createdTime; +} diff --git a/wm-production/src/main/java/com/water/production/entity/VideoCamera.java b/wm-production/src/main/java/com/water/production/entity/VideoCamera.java new file mode 100644 index 00000000..864bc841 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/entity/VideoCamera.java @@ -0,0 +1,10 @@ +package com.water.production.entity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +@Data @TableName("prod_video_camera") +public class VideoCamera { + @TableId(type = IdType.AUTO) private Long id; + private String cameraId, name, area; + private String streamUrl; private Integer status; // 0离线 1在线 + private Double lng, lat; +} diff --git a/wm-production/src/main/java/com/water/production/entity/WaterQualityRecord.java b/wm-production/src/main/java/com/water/production/entity/WaterQualityRecord.java new file mode 100644 index 00000000..5762d25f --- /dev/null +++ b/wm-production/src/main/java/com/water/production/entity/WaterQualityRecord.java @@ -0,0 +1,11 @@ +package com.water.production.entity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; import java.time.LocalDateTime; +@Data @TableName("prod_water_quality") +public class WaterQualityRecord { + @TableId(type = IdType.AUTO) private Long id; + private String station, positionType; // 原水/出厂水/末梢水 + private Double turbidity, ph, residualChlorine, color, odor; + private String result; // 合格/不合格 + @TableField(fill=FieldFill.INSERT) private LocalDateTime createdTime; +} diff --git a/wm-production/src/main/java/com/water/production/mapper/AlertRecordMapper.java b/wm-production/src/main/java/com/water/production/mapper/AlertRecordMapper.java new file mode 100644 index 00000000..ba5177e0 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/mapper/AlertRecordMapper.java @@ -0,0 +1,5 @@ +package com.water.production.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.water.production.entity.AlertRecord; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface AlertRecordMapper extends BaseMapper {} diff --git a/wm-production/src/main/java/com/water/production/mapper/DeviceStatusMapper.java b/wm-production/src/main/java/com/water/production/mapper/DeviceStatusMapper.java new file mode 100644 index 00000000..5e42e3e9 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/mapper/DeviceStatusMapper.java @@ -0,0 +1,5 @@ +package com.water.production.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.water.production.entity.DeviceStatus; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface DeviceStatusMapper extends BaseMapper {} diff --git a/wm-production/src/main/java/com/water/production/mapper/FlowPressureMonitorMapper.java b/wm-production/src/main/java/com/water/production/mapper/FlowPressureMonitorMapper.java new file mode 100644 index 00000000..f4f60926 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/mapper/FlowPressureMonitorMapper.java @@ -0,0 +1,5 @@ +package com.water.production.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.water.production.entity.FlowPressureMonitor; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface FlowPressureMonitorMapper extends BaseMapper {} diff --git a/wm-production/src/main/java/com/water/production/mapper/VideoCameraMapper.java b/wm-production/src/main/java/com/water/production/mapper/VideoCameraMapper.java new file mode 100644 index 00000000..3d6c6e68 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/mapper/VideoCameraMapper.java @@ -0,0 +1,5 @@ +package com.water.production.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.water.production.entity.VideoCamera; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface VideoCameraMapper extends BaseMapper {} diff --git a/wm-production/src/main/java/com/water/production/mapper/WaterQualityRecordMapper.java b/wm-production/src/main/java/com/water/production/mapper/WaterQualityRecordMapper.java new file mode 100644 index 00000000..5fa5344e --- /dev/null +++ b/wm-production/src/main/java/com/water/production/mapper/WaterQualityRecordMapper.java @@ -0,0 +1,5 @@ +package com.water.production.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.water.production.entity.WaterQualityRecord; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface WaterQualityRecordMapper extends BaseMapper {} diff --git a/wm-production/src/main/resources/db/V1__production_monitor.sql b/wm-production/src/main/resources/db/V1__production_monitor.sql new file mode 100644 index 00000000..d4465002 --- /dev/null +++ b/wm-production/src/main/resources/db/V1__production_monitor.sql @@ -0,0 +1,30 @@ +CREATE TABLE IF NOT EXISTS prod_water_quality ( + id BIGSERIAL PRIMARY KEY, station VARCHAR(100), position_type VARCHAR(20), + turbidity DOUBLE PRECISION, ph DOUBLE PRECISION, + residual_chlorine DOUBLE PRECISION, color DOUBLE PRECISION, odor DOUBLE PRECISION, + result VARCHAR(20), created_time TIMESTAMP DEFAULT NOW() +); +CREATE TABLE IF NOT EXISTS prod_flow_pressure ( + id BIGSERIAL PRIMARY KEY, device_id VARCHAR(50), area VARCHAR(50), + position_type VARCHAR(20), value DOUBLE PRECISION, unit VARCHAR(20), + lng DOUBLE PRECISION, lat DOUBLE PRECISION, + created_time TIMESTAMP DEFAULT NOW() +); +CREATE TABLE IF NOT EXISTS prod_device_status ( + id BIGSERIAL PRIMARY KEY, device_id VARCHAR(50), device_name VARCHAR(100), + device_type VARCHAR(30), area VARCHAR(50), status INT DEFAULT 0, + lng DOUBLE PRECISION, lat DOUBLE PRECISION, + last_online_time TIMESTAMP +); +CREATE TABLE IF NOT EXISTS prod_alert_record ( + id BIGSERIAL PRIMARY KEY, device_id VARCHAR(50), area VARCHAR(50), + level VARCHAR(10), alert_type VARCHAR(30), description TEXT, + status INT DEFAULT 0, confirmed_by BIGINT, handled_by BIGINT, + created_time TIMESTAMP DEFAULT NOW(), + confirmed_time TIMESTAMP, handled_time TIMESTAMP +); +CREATE TABLE IF NOT EXISTS prod_video_camera ( + id BIGSERIAL PRIMARY KEY, camera_id VARCHAR(50), name VARCHAR(100), + area VARCHAR(50), stream_url VARCHAR(500), status INT DEFAULT 0, + lng DOUBLE PRECISION, lat DOUBLE PRECISION +);