diff --git a/wm-production/pom.xml b/wm-production/pom.xml index 7c7b09d1..93e9e58c 100644 --- a/wm-production/pom.xml +++ b/wm-production/pom.xml @@ -12,5 +12,10 @@ com.baomidoumybatis-plus-spring-boot3-starter cn.dev33sa-token-spring-boot3-starter org.postgresqlpostgresql + + io.springfox + springfox-boot-starter + 3.0.0 + \ No newline at end of file diff --git a/wm-production/src/main/java/com/water/production/DataQueryController.java b/wm-production/src/main/java/com/water/production/DataQueryController.java new file mode 100644 index 00000000..28df12cd --- /dev/null +++ b/wm-production/src/main/java/com/water/production/DataQueryController.java @@ -0,0 +1,83 @@ +package com.water.production.controller; + +import com.water.production.entity.*; +import com.water.production.service.DataQueryService; +import com.water.production.vo.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDateTime; +import java.util.Map; + +@RestController +@RequestMapping("/api/data") +@CrossOrigin(origins = "*") +public class DataQueryController { + + @Autowired + private DataQueryService dataQueryService; + + /** + * 水量数据查询 + */ + @GetMapping("/water") + public Result> queryWaterData(WaterDataQueryVO vo) { + Page page = dataQueryService.queryWaterData(vo); + return Result.success(page); + } + + /** + * 水质数据查询 + */ + @GetMapping("/quality") + public Result> queryWaterQuality(WaterQualityQueryVO vo) { + Page page = dataQueryService.queryWaterQuality(vo); + return Result.success(page); + } + + /** + * 报警记录查询 + */ + @GetMapping("/alarms") + public Result> queryAlarmRecords(AlarmQueryVO vo) { + Page page = dataQueryService.queryAlarmRecords(vo); + return Result.success(page); + } + + /** + * 生成水量汇总报表 + */ + @PostMapping("/report/water-volume") + public Result generateWaterVolumeReport( + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime, + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime, + @RequestParam(required = false) String region) { + ProductionReport report = dataQueryService.generateWaterVolumeReport(startTime, endTime, region); + return Result.success(report); + } + + /** + * 生成水质合格率报表 + */ + @PostMapping("/report/water-quality") + public Result generateWaterQualityReport( + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime, + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime, + @RequestParam(required = false) String region) { + ProductionReport report = dataQueryService.generateWaterQualityReport(startTime, endTime, region); + return Result.success(report); + } + + /** + * 生成报警统计报表 + */ + @PostMapping("/report/alarm-stat") + public Result generateAlarmReport( + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime, + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime, + @RequestParam(required = false) String region) { + ProductionReport report = dataQueryService.generateAlarmReport(startTime, endTime, region); + return Result.success(report); + } +} diff --git a/wm-production/src/main/java/com/water/production/DataQueryService.java b/wm-production/src/main/java/com/water/production/DataQueryService.java new file mode 100644 index 00000000..d5e3834a --- /dev/null +++ b/wm-production/src/main/java/com/water/production/DataQueryService.java @@ -0,0 +1,185 @@ +package com.water.production.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.water.production.entity.*; +import com.water.production.mapper.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class DataQueryService { + + @Autowired + private WaterDataMapper waterDataMapper; + + @Autowired + private WaterQualityMapper waterQualityMapper; + + @Autowired + private AlarmRecordMapper alarmRecordMapper; + + @Autowired + private DeviceDataMapper deviceDataMapper; + + @Autowired + private ProductionReportMapper productionReportMapper; + + /** + * 历史数据查询 - 水量数据 + */ + public Page queryWaterData(WaterDataQueryVO vo) { + QueryWrapper wrapper = new QueryWrapper<>(); + + if (StringUtils.hasText(vo.getDeviceId())) { + wrapper.eq("device_id", vo.getDeviceId()); + } + if (vo.getStartTime() != null) { + wrapper.ge("create_time", vo.getStartTime()); + } + if (vo.getEndTime() != null) { + wrapper.le("create_time", vo.getEndTime()); + } + if (StringUtils.hasText(vo.getRegion())) { + wrapper.like("region", vo.getRegion()); + } + + return waterDataMapper.selectPage(new Page<>(vo.getPageNum(), vo.getPageSize()), wrapper); + } + + /** + * 历史数据查询 - 水质数据 + */ + public Page queryWaterQuality(WaterQualityQueryVO vo) { + QueryWrapper wrapper = new QueryWrapper<>(); + + if (StringUtils.hasText(vo.getDeviceId())) { + wrapper.eq("device_id", vo.getDeviceId()); + } + if (vo.getStartTime() != null) { + wrapper.ge("create_time", vo.getStartTime()); + } + if (vo.getEndTime() != null) { + wrapper.le("create_time", vo.getEndTime()); + } + if (vo.getQualityLevel() != null) { + wrapper.eq("quality_level", vo.getQualityLevel()); + } + + return waterQualityMapper.selectPage(new Page<>(vo.getPageNum(), vo.getPageSize()), wrapper); + } + + /** + * 历史数据查询 - 报警记录 + */ + public Page queryAlarmRecords(AlarmQueryVO vo) { + QueryWrapper wrapper = new QueryWrapper<>(); + + if (StringUtils.hasText(vo.getDeviceId())) { + wrapper.eq("device_id", vo.getDeviceId()); + } + if (vo.getStartTime() != null) { + wrapper.ge("create_time", vo.getStartTime()); + } + if (vo.getEndTime() != null) { + wrapper.le("create_time", vo.getEndTime()); + } + if (StringUtils.hasText(vo.getAlarmType())) { + wrapper.eq("alarm_type", vo.getAlarmType()); + } + if (vo.getAlarmLevel() != null) { + wrapper.eq("alarm_level", vo.getAlarmLevel()); + } + + return alarmRecordMapper.selectPage(new Page<>(vo.getPageNum(), vo.getPageSize()), wrapper); + } + + /** + * 生成水量汇总报表 + */ + public ProductionReport generateWaterVolumeReport(LocalDateTime startTime, LocalDateTime endTime, String region) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.between("create_time", startTime, endTime); + if (StringUtils.hasText(region)) { + wrapper.like("region", region); + } + + List dataList = waterDataMapper.selectList(wrapper); + + double totalVolume = dataList.stream().mapToDouble(WaterData::getVolume).sum(); + double avgVolume = dataList.isEmpty() ? 0 : totalVolume / dataList.size(); + + ProductionReport report = new ProductionReport(); + report.setReportType("WATER_VOLUME"); + report.setStartTime(startTime); + report.setEndTime(endTime); + report.setRegion(region); + report.setTotalValue(totalVolume); + report.setAvgValue(avgVolume); + report.setDataCount(dataList.size()); + report.setGenerateTime(LocalDateTime.now()); + + return productionReportMapper.insert(report) > 0 ? report : null; + } + + /** + * 生成水质合格率报表 + */ + public ProductionReport generateWaterQualityReport(LocalDateTime startTime, LocalDateTime endTime, String region) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.between("create_time", startTime, endTime); + if (StringUtils.hasText(region)) { + wrapper.like("region", region); + } + + List qualityList = waterQualityMapper.selectList(wrapper); + int qualifiedCount = (int) qualityList.stream().filter(q -> q.getQualityLevel() <= 3).count(); + double合格率 = qualityList.isEmpty() ? 0 : (double) qualifiedCount / qualityList.size() * 100; + + ProductionReport report = new ProductionReport(); + report.setReportType("WATER_QUALITY"); + report.setStartTime(startTime); + report.setEndTime(endTime); + report.setRegion(region); + report.setTotalValue(qualifiedCount); + report.setAvgValue(合格率); + report.setDataCount(qualityList.size()); + report.setGenerateTime(LocalDateTime.now()); + + return productionReportMapper.insert(report) > 0 ? report : null; + } + + /** + * 生成报警统计报表 + */ + public ProductionReport generateAlarmReport(LocalDateTime startTime, LocalDateTime endTime, String region) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.between("create_time", startTime, endTime); + if (StringUtils.hasText(region)) { + wrapper.like("region", region); + } + + List alarmList = alarmRecordMapper.selectList(wrapper); + + // 按报警类型分组统计 + Map typeStats = alarmList.stream() + .collect(Collectors.groupingBy(AlarmRecord::getAlarmType, Collectors.counting())); + + ProductionReport report = new ProductionReport(); + report.setReportType("ALARM_STAT"); + report.setStartTime(startTime); + report.setEndTime(endTime); + report.setRegion(region); + report.setTotalValue(alarmList.size()); + report.setDataCount(typeStats.size()); + report.setRemarks(typeStats.toString()); + report.setGenerateTime(LocalDateTime.now()); + + return productionReportMapper.insert(report) > 0 ? report : null; + } +} diff --git a/wm-production/src/main/java/com/water/production/Result.java b/wm-production/src/main/java/com/water/production/Result.java new file mode 100644 index 00000000..dee178a1 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/Result.java @@ -0,0 +1,29 @@ +package com.water.production.entity; + +import lombok.Data; + +@Data +public class Result { + private Integer code; + private String message; + private T data; + + public static Result success(T data) { + Result result = new Result<>(); + result.setCode(200); + result.setMessage("success"); + result.setData(data); + return result; + } + + public static Result success() { + return success(null); + } + + public static Result error(Integer code, String message) { + Result result = new Result<>(); + result.setCode(code); + result.setMessage(message); + return result; + } +} diff --git a/wm-production/src/main/java/com/water/production/application.yml b/wm-production/src/main/java/com/water/production/application.yml new file mode 100644 index 00000000..928b75e6 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/application.yml @@ -0,0 +1,11 @@ + +# MyBatis-Plus配置 +mybatis-plus: + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + global-config: + db-config: + id-type: auto + logic-delete-field: deleted + logic-delete-value: 1 + logic-not-delete-value: 0 diff --git a/wm-production/src/main/java/com/water/production/config/MyBatisPlusConfig.java b/wm-production/src/main/java/com/water/production/config/MyBatisPlusConfig.java new file mode 100644 index 00000000..fb057e64 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/config/MyBatisPlusConfig.java @@ -0,0 +1,18 @@ +package com.water.production.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MyBatisPlusConfig { + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRESQL)); + return interceptor; + } +} diff --git a/wm-production/src/main/java/com/water/production/config/SwaggerConfig.java b/wm-production/src/main/java/com/water/production/config/SwaggerConfig.java new file mode 100644 index 00000000..b92b18d0 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/config/SwaggerConfig.java @@ -0,0 +1,34 @@ +package com.water.production.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; + +@Configuration +public class SwaggerConfig { + + @Bean + public Docket api() { + return new Docket(DocumentationType.OAS_30) + .select() + .apis(RequestHandlerSelectors.basePackage("com.water.production.controller")) + .paths(PathSelectors.any()) + .build() + .apiInfo(apiInfo()); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("智慧水务管理系统 - 数据查询API") + .description("历史数据回溯与报表生成接口") + .contact(new Contact("水厂开发团队", "", "dev@water.com")) + .version("1.0.0") + .build(); + } +} diff --git a/wm-production/src/main/java/com/water/production/entity/AlarmRecord.java b/wm-production/src/main/java/com/water/production/entity/AlarmRecord.java new file mode 100644 index 00000000..c5951d69 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/entity/AlarmRecord.java @@ -0,0 +1,21 @@ +package com.water.production.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.time.LocalDateTime; + +@Data +@TableName("alarm_record") +public class AlarmRecord { + @TableId(type = IdType.AUTO) + private Long id; + private String deviceId; + private String region; + private String alarmType; + private Integer alarmLevel; + private String alarmMessage; + private LocalDateTime createTime; + private Integer status; +} diff --git a/wm-production/src/main/java/com/water/production/entity/ProductionReport.java b/wm-production/src/main/java/com/water/production/entity/ProductionReport.java new file mode 100644 index 00000000..32841825 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/entity/ProductionReport.java @@ -0,0 +1,23 @@ +package com.water.production.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.time.LocalDateTime; + +@Data +@TableName("production_report") +public class ProductionReport { + @TableId(type = IdType.AUTO) + private Long id; + private String reportType; + private String region; + private LocalDateTime startTime; + private LocalDateTime endTime; + private double totalValue; + private double avgValue; + private Integer dataCount; + private String remarks; + private LocalDateTime generateTime; +} diff --git a/wm-production/src/main/java/com/water/production/entity/WaterData.java b/wm-production/src/main/java/com/water/production/entity/WaterData.java new file mode 100644 index 00000000..1d1adb16 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/entity/WaterData.java @@ -0,0 +1,20 @@ +package com.water.production.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.time.LocalDateTime; + +@Data +@TableName("water_data") +public class WaterData { + @TableId(type = IdType.AUTO) + private Long id; + private String deviceId; + private String region; + private double volume; + private double pressure; + private double flowRate; + private LocalDateTime createTime; +} diff --git a/wm-production/src/main/java/com/water/production/entity/WaterQuality.java b/wm-production/src/main/java/com/water/production/entity/WaterQuality.java new file mode 100644 index 00000000..4dc62eba --- /dev/null +++ b/wm-production/src/main/java/com/water/production/entity/WaterQuality.java @@ -0,0 +1,22 @@ +package com.water.production.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.time.LocalDateTime; + +@Data +@TableName("water_quality") +public class WaterQuality { + @TableId(type = IdType.AUTO) + private Long id; + private String deviceId; + private String region; + private double ph; + private double turbidity; + private double chlorine; + private double dissolvedOxygen; + private int qualityLevel; + private LocalDateTime createTime; +} diff --git a/wm-production/src/main/java/com/water/production/mapper/AlarmRecordMapper.java b/wm-production/src/main/java/com/water/production/mapper/AlarmRecordMapper.java new file mode 100644 index 00000000..f089108d --- /dev/null +++ b/wm-production/src/main/java/com/water/production/mapper/AlarmRecordMapper.java @@ -0,0 +1,9 @@ +package com.water.production.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.water.production.entity.AlarmRecord; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface AlarmRecordMapper extends BaseMapper { +} diff --git a/wm-production/src/main/java/com/water/production/mapper/ProductionReportMapper.java b/wm-production/src/main/java/com/water/production/mapper/ProductionReportMapper.java new file mode 100644 index 00000000..8b1c33d8 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/mapper/ProductionReportMapper.java @@ -0,0 +1,9 @@ +package com.water.production.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.water.production.entity.ProductionReport; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ProductionReportMapper extends BaseMapper { +} diff --git a/wm-production/src/main/java/com/water/production/mapper/WaterDataMapper.java b/wm-production/src/main/java/com/water/production/mapper/WaterDataMapper.java new file mode 100644 index 00000000..304063e0 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/mapper/WaterDataMapper.java @@ -0,0 +1,9 @@ +package com.water.production.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.water.production.entity.WaterData; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WaterDataMapper extends BaseMapper { +} diff --git a/wm-production/src/main/java/com/water/production/mapper/WaterQualityMapper.java b/wm-production/src/main/java/com/water/production/mapper/WaterQualityMapper.java new file mode 100644 index 00000000..f25066b5 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/mapper/WaterQualityMapper.java @@ -0,0 +1,9 @@ +package com.water.production.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.water.production.entity.WaterQuality; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WaterQualityMapper extends BaseMapper { +} diff --git a/wm-production/src/main/java/com/water/production/vo/AlarmQueryVO.java b/wm-production/src/main/java/com/water/production/vo/AlarmQueryVO.java new file mode 100644 index 00000000..89be3604 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/vo/AlarmQueryVO.java @@ -0,0 +1,16 @@ +package com/water/production/vo; + +import lombok.Data; +import java.time.LocalDateTime; + +@Data +public class AlarmQueryVO { + private Integer pageNum = 1; + private Integer pageSize = 10; + private String deviceId; + private String region; + private String alarmType; + private Integer alarmLevel; + private LocalDateTime startTime; + private LocalDateTime endTime; +} diff --git a/wm-production/src/main/java/com/water/production/vo/WaterDataQueryVO.java b/wm-production/src/main/java/com/water/production/vo/WaterDataQueryVO.java new file mode 100644 index 00000000..050d7e3c --- /dev/null +++ b/wm-production/src/main/java/com/water/production/vo/WaterDataQueryVO.java @@ -0,0 +1,14 @@ +package com.water.production.vo; + +import lombok.Data; +import java.time.LocalDateTime; + +@Data +public class WaterDataQueryVO { + private Integer pageNum = 1; + private Integer pageSize = 10; + private String deviceId; + private String region; + private LocalDateTime startTime; + private LocalDateTime endTime; +} diff --git a/wm-production/src/main/java/com/water/production/vo/WaterQualityQueryVO.java b/wm-production/src/main/java/com/water/production/vo/WaterQualityQueryVO.java new file mode 100644 index 00000000..04d79d05 --- /dev/null +++ b/wm-production/src/main/java/com/water/production/vo/WaterQualityQueryVO.java @@ -0,0 +1,15 @@ +package com.water.production.vo; + +import lombok.Data; +import java.time.LocalDateTime; + +@Data +public class WaterQualityQueryVO { + private Integer pageNum = 1; + private Integer pageSize = 10; + private String deviceId; + private String region; + private Integer qualityLevel; + private LocalDateTime startTime; + private LocalDateTime endTime; +} diff --git a/wm-production/src/main/resources/application.yml b/wm-production/src/main/resources/application.yml index bc60a6d9..532e10a8 100644 --- a/wm-production/src/main/resources/application.yml +++ b/wm-production/src/main/resources/application.yml @@ -15,3 +15,14 @@ spring: mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml + +# MyBatis-Plus配置 +mybatis-plus: + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + global-config: + db-config: + id-type: auto + logic-delete-field: deleted + logic-delete-value: 1 + logic-not-delete-value: 0 diff --git a/wm-production/src/main/resources/init.sql b/wm-production/src/main/resources/init.sql new file mode 100644 index 00000000..90399be6 --- /dev/null +++ b/wm-production/src/main/resources/init.sql @@ -0,0 +1,66 @@ +-- 水量数据表 +CREATE TABLE IF NOT EXISTS water_data ( + id BIGSERIAL PRIMARY KEY, + device_id VARCHAR(50) NOT NULL, + region VARCHAR(100), + volume DOUBLE PRECISION, + pressure DOUBLE PRECISION, + flow_rate DOUBLE PRECISION, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- 水质数据表 +CREATE TABLE IF NOT EXISTS water_quality ( + id BIGSERIAL PRIMARY KEY, + device_id VARCHAR(50) NOT NULL, + region VARCHAR(100), + ph DOUBLE PRECISION, + turbidity DOUBLE PRECISION, + chlorine DOUBLE PRECISION, + dissolved_oxygen DOUBLE PRECISION, + quality_level INTEGER, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- 报警记录表 +CREATE TABLE IF NOT EXISTS alarm_record ( + id BIGSERIAL PRIMARY KEY, + device_id VARCHAR(50) NOT NULL, + region VARCHAR(100), + alarm_type VARCHAR(50), + alarm_level INTEGER, + alarm_message TEXT, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + status INTEGER DEFAULT 0 -- 0:未处理, 1:处理中, 2:已处理 +); + +-- 生产报表表 +CREATE TABLE IF NOT EXISTS production_report ( + id BIGSERIAL PRIMARY KEY, + report_type VARCHAR(50) NOT NULL, + region VARCHAR(100), + start_time TIMESTAMP, + end_time TIMESTAMP, + total_value DOUBLE PRECISION, + avg_value DOUBLE PRECISION, + data_count INTEGER, + remarks TEXT, + generate_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- 创建索引 +CREATE INDEX IF NOT EXISTS idx_water_data_device ON water_data(device_id); +CREATE INDEX IF NOT EXISTS idx_water_data_region ON water_data(region); +CREATE INDEX IF NOT EXISTS idx_water_data_time ON water_data(create_time); + +CREATE INDEX IF NOT EXISTS idx_water_quality_device ON water_quality(device_id); +CREATE INDEX IF NOT EXISTS idx_water_quality_region ON water_quality(region); +CREATE INDEX IF NOT EXISTS idx_water_quality_time ON water_quality(create_time); + +CREATE INDEX IF NOT EXISTS idx_alarm_record_device ON alarm_record(device_id); +CREATE INDEX IF NOT EXISTS idx_alarm_record_region ON alarm_record(region); +CREATE INDEX IF NOT EXISTS idx_alarm_record_time ON alarm_record(create_time); + +CREATE INDEX IF NOT EXISTS idx_report_type ON production_report(report_type); +CREATE INDEX IF NOT EXISTS idx_report_region ON production_report(region); +CREATE INDEX IF NOT EXISTS idx_report_time ON production_report(generate_time); diff --git a/wm-production/wm-production/src/main/resources/mapper/AlarmRecordMapper.xml b/wm-production/wm-production/src/main/resources/mapper/AlarmRecordMapper.xml new file mode 100644 index 00000000..deeb7c48 --- /dev/null +++ b/wm-production/wm-production/src/main/resources/mapper/AlarmRecordMapper.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/wm-production/wm-production/src/main/resources/mapper/ProductionReportMapper.xml b/wm-production/wm-production/src/main/resources/mapper/ProductionReportMapper.xml new file mode 100644 index 00000000..6bc0ee79 --- /dev/null +++ b/wm-production/wm-production/src/main/resources/mapper/ProductionReportMapper.xml @@ -0,0 +1,16 @@ + + + + + + INSERT INTO production_report ( + report_type, region, start_time, end_time, + total_value, avg_value, data_count, remarks, generate_time + ) VALUES ( + #{reportType}, #{region}, #{startTime}, #{endTime}, + #{totalValue}, #{avgValue}, #{dataCount}, #{remarks}, #{generateTime} + ) + RETURNING id + + diff --git a/wm-production/wm-production/src/main/resources/mapper/WaterDataMapper.xml b/wm-production/wm-production/src/main/resources/mapper/WaterDataMapper.xml new file mode 100644 index 00000000..41658c01 --- /dev/null +++ b/wm-production/wm-production/src/main/resources/mapper/WaterDataMapper.xml @@ -0,0 +1,24 @@ + + + + + + diff --git a/wm-production/wm-production/src/main/resources/mapper/WaterQualityMapper.xml b/wm-production/wm-production/src/main/resources/mapper/WaterQualityMapper.xml new file mode 100644 index 00000000..7be4c18d --- /dev/null +++ b/wm-production/wm-production/src/main/resources/mapper/WaterQualityMapper.xml @@ -0,0 +1,27 @@ + + + + + +