diff --git a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java index d801cb4d..d04d95c5 100644 --- a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java @@ -58,6 +58,7 @@ public class SecurityConfig { .requestMatchers("/tempFile/**").permitAll() .requestMatchers("/system/user/auditUser").permitAll() .requestMatchers("/eng/**").permitAll() + .requestMatchers("/eq/**").permitAll() .requestMatchers("/env/**").permitAll() .requestMatchers("/wt/**").permitAll() .requestMatchers("/zq/**").permitAll() diff --git a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java index d55a6ec7..18d33404 100644 --- a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java @@ -110,4 +110,12 @@ public class SwaggerConfig { .packagesToScan("com.yfd.platform.qgc_eng.controller") .build(); } + + @Bean + public GroupedOpenApi groupEngEqApi() { + return GroupedOpenApi.builder() + .group("4.1. 全过程-常规水电数据服务-生态流量") + .packagesToScan("com.yfd.platform.qgc_eng.eq.controller") + .build(); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/AlarmPointController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/AlarmPointController.java deleted file mode 100644 index 02fcd23a..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/AlarmPointController.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.entity.vo.AlarmStcdCountVo; -import com.yfd.platform.qgc_eng.service.AlarmPointService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import jakarta.annotation.Resource; -import java.util.Map; - -/** - * 运行告警锚点控制器 - */ -@RestController -@RequestMapping("/eng/alarmPoint") -@Tag(name = "运行告警锚点控制器") -public class AlarmPointController { - - /** - * 服务对象 - */ - @Resource - private AlarmPointService alarmPointService; - - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "条件过滤数据列表定制") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = alarmPointService.processKendoList(dataSourceRequest, filterResult, page); - alarmPointService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - /** - * 获取警报统计数据 - * @param stcd 电站ID - * @return 响应结果 - */ - @PostMapping({"/getAlarmCount"}) - @Operation(summary = "获取警报统计数据") - public ResponseResult getAlarmCount(String stcd) { - AlarmStcdCountVo vo = alarmPointService.getAlarmCount(stcd); - return ResponseResult.successData(vo); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqController.java deleted file mode 100644 index c05b2e6e..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqController.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.common.GroupResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.service.EngEqService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; - -import java.util.Map; - -/** - * 电站生态流量统计查询 - */ -@RestController -@RequestMapping("/eng/eq/") -@Tag(name = "电站生态流量统计查询") -public class EngEqController { - - /** - * 服务对象 - */ - @Resource - private EngEqService msEngEqService; - - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "条件过滤数据列表定制") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = msEngEqService.processKendoList(dataSourceRequest, filterResult, page); - msEngEqService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - /** - * 导出 - * @param dataSourceRequest 数据源请求 - * @param response 响应 - */ - @PostMapping({"/export"}) - @Operation(summary = "导出") - public void export(@RequestBody DataSourceRequest dataSourceRequest, HttpServletResponse response) { - // 实际应该实现导出逻辑 - } - - /** - * 月统计数据有数据的电站 - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping("/lastEngDataSite") - @Operation(summary = "查询指定时间有数据的站点") - public ResponseResult lastEngDataSite(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.lastEngDataSite(dataSourceRequest); - return ResponseResult.successData(result); - } - - @PostMapping("/default/stcd") - @Operation(summary = "获取生态流量默认有数据的电站") - public ResponseResult getDefaultStcd(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.getDefaultStcd(dataSourceRequest); - return ResponseResult.successData(result); - } - - @PostMapping("/getSfdbInfo") - @Operation(summary = "获取不达标详情数据") - public ResponseResult getSfdbInfo(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.getSfdbInfo(dataSourceRequest); - return ResponseResult.successData(result); - } - - @PostMapping({"/qecSfdbCountByStcd"}) - @Operation(summary = "生态流量不达标测站数") - public ResponseResult qecSfdbCountByStcd(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.qecSfdbCountByStcd(dataSourceRequest); - return ResponseResult.successData(result); - } - - /** - * 生态流量达标率计算(基地维度、不达标原因维度) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/qecRateCount"}) - @Operation(summary = "生态流量达标率计算(基地维度、不达标原因维度)") - public ResponseResult qecRateCount(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.qecRateCount(dataSourceRequest); - return ResponseResult.successData(result); - } - - /** - * 生态流量不达标数量计算(电站维度、不达标原因维度) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/qecSfdbCount"}) - @Operation(summary = "生态流量不达标数量计算(电站维度、不达标原因维度)") - public ResponseResult qecSfdbCount(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceResult result = msEngEqService.qecSfdbCount(dataSourceRequest); - return ResponseResult.successData(result); - } - - @PostMapping({"/group/GetKendoListCust"}) - public ResponseResult getGroupKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = msEngEqService.processKendoList(dataSourceRequest, filterResult, page); - msEngEqService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqDataController.java deleted file mode 100644 index 60a072f5..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqDataController.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.service.EngEqDataService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * 电站实时数据查询 - */ -@RestController -@RequestMapping("/eng/eq/data") -@Tag(name = "电站实时数据查询") -public class EngEqDataController { - - /** - * 服务对象 - */ - @Resource - private EngEqDataService engEqDataService; - - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "生态流量沿程变化-小时") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = engEqDataService.processKendoList(dataSourceRequest, filterResult, page); - engEqDataService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - /** - * 导出 - * @param dataSourceRequest 数据源请求 - * @param response 响应 - */ - @PostMapping({"/export"}) - @Operation(summary = "导出") - public void export(@RequestBody DataSourceRequest dataSourceRequest, HttpServletResponse response) { - // 实际应该实现导出逻辑 - } - - @PostMapping({"/day/GetKendoListCust"}) - @Operation(summary = "查询生态流量 日 数据") - public ResponseResult getKendoDayListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - String groupBy = ""; // 实际应该根据业务需求处理分组 - DataSourceResult dataSourceResult = engEqDataService.processDayKendoList(dataSourceRequest, filterResult, page, groupBy); - engEqDataService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - @PostMapping({"/drtp/GetKendoListCust"}) - @Operation(summary = "查询生态流量 周旬月季年 数据") - public ResponseResult getKendoDrtpListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - String groupBy = ""; // 实际应该根据业务需求处理分组 - DataSourceResult dataSourceResult = engEqDataService.processKendoDrtpList(dataSourceRequest, filterResult, page, groupBy); - engEqDataService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - @PostMapping({"/fastSiteLastData/GetKendoListCust"}) - @Operation(summary = "查询沿程第一个电站的生态流量数据时间") - public ResponseResult getFastSiteLastData(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - String groupBy = ""; // 实际应该根据业务需求处理分组 - DataSourceResult dataSourceResult = engEqDataService.getFastSiteLastData(dataSourceRequest, filterResult, page, groupBy); - engEqDataService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - /** - * 生态流量沿程变化(面板) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/along/GetKendoListCust"}) - @Operation(summary = "查询生态流量(沿程数据)") - public ResponseResult getKendoAlongListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = engEqDataService.processKendoList(dataSourceRequest, filterResult, page); - engEqDataService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - @PostMapping({"/getEngLimit"}) - @Operation(summary = "根据时间范围查询电站生态流量限值及来源") - public ResponseResult getEngLimit(@RequestBody DataSourceRequest dataSourceRequest) { - Object result = engEqDataService.getEngLimit(dataSourceRequest); - return ResponseResult.successData(result); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqIntervalController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqIntervalController.java deleted file mode 100644 index 57871c1d..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqIntervalController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.annotation.Log; -import com.yfd.platform.common.DataSourceLoadOptionsBase; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.domain.MsEngEq; -import com.yfd.platform.qgc_eng.service.EngEqIntervalService; -import com.yfd.platform.qgc_eng.service.EngEqService; -import com.yfd.platform.utils.KendoUtil; -import com.yfd.platform.utils.QgcQueryWrapperUtil; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * 生态流量区间统计控制器 - */ -@RestController -@RequestMapping("/eng/eq/interval") -@Tag(name = "电站生态流量区间统计查询") -public class EngEqIntervalController { - - /** - * 服务对象 - */ - @Resource - private EngEqIntervalService eqIntervalService; - - @Resource - private EngEqService engEqService; - - /** - * 生态流量达标情况 - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "生态流量达标情况") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult result = eqIntervalService.processKendoList(dataSourceRequest, filterResult, page); - eqIntervalService.processKendoGetListLoadResult(dataSourceRequest, result); - return ResponseResult.successData(result); - } - - /** - * 导出 - * @param dataSourceRequest 数据源请求 - * @param response 响应 - */ - @PostMapping({"/export"}) - @Operation(summary = "导出") - @Log(module = "生态流量", value = "导出生态流量数据") - public void export(@RequestBody DataSourceRequest dataSourceRequest, HttpServletResponse response) { - // 实际应该实现导出逻辑 - } - - /** - * 生态流量达标率 小时统计(二级页面) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/qgc/hour/GetKendoListCust"}) - @Operation(summary = "生态流量达标率 小时统计(二级页面)") - public ResponseResult getQgcHourKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - String kendoGroupCode = "EngEqHour"; -// Map filterResult = KendoUtil.getGroupResultMap(dataSourceRequest, null, EngEqIntervalController.class); -// String groupBy = KendoUtil.getGroupBy(dataSourceRequest); - Page page = KendoUtil.getPage(dataSourceRequest); - DataSourceResult result = eqIntervalService.getQgcHourKendoListCust(dataSourceRequest, null, page, null); -// eqIntervalService.processKendoGetListLoadResult(dataSourceRequest, result); - return ResponseResult.successData(result); - } - - /** - * 生态流量达标率 日统计(二级页面) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/qgc/day/GetKendoListCust"}) - @Operation(summary = "生态流量达标率 日统计(二级页面)") - public ResponseResult getQgcDayKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - String groupBy = ""; // 实际应该根据业务需求处理分组 - DataSourceResult result = eqIntervalService.getQgcDayKendoListCust(dataSourceRequest, filterResult, page, groupBy); - eqIntervalService.processKendoGetListLoadResult(dataSourceRequest, result); - return ResponseResult.successData(result); - } - - /** - * 生态流量达标率 区间范围统计(一级页面) - * @param dataSourceRequest 数据源请求 - * @return 响应结果 - */ - @PostMapping({"/qgc/getQgcStaticData"}) - @Operation(summary = "生态流量达标率 区间范围统计(一级页面)") -// @Log(module = "生态流量", value = "生态流量达标率统计") - public ResponseResult getQgcStaticData(@RequestBody DataSourceRequest dataSourceRequest) { - DataSourceLoadOptionsBase loadOptionsBase = dataSourceRequest.toDevRequest(); - String type = QgcQueryWrapperUtil.getFilterFieldValue(loadOptionsBase, "type"); - ResponseResult r; - if("hour".equals(type)){ - r = this.getQgcHourKendoListCust(dataSourceRequest); - }else if("day".equals(type)){ - r = this.getQgcDayKendoListCust(dataSourceRequest); - }else{ - return ResponseResult.error("请选择生态流量达标率统计类型(小时还是天统计)"); - } - if(r != null && r.get("code").equals("0") && r.get("data") != null){ - DataSourceResult dataSourceResult = (DataSourceResult) r.get("data"); - if(dataSourceResult != null && dataSourceResult.getData() != null){ - Map staticData = eqIntervalService.getQgcQecStaticData(dataSourceResult.getData(), type); - return ResponseResult.successData(staticData); - } - } - return ResponseResult.success(); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqStatController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqStatController.java deleted file mode 100644 index 9460967c..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngEqStatController.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.common.GroupResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.service.EngEqService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * 电站生态流量统计结果查询 - */ -@RestController -@RequestMapping("/eng/eq/stat") -@Tag(name = "电站生态流量统计结果查询") -public class EngEqStatController { - - /** - * 服务对象 - */ - @Resource - private EngEqService msEngEqService; - - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "条件过滤数据列表定制") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = msEngEqService.processKendoList(dataSourceRequest, filterResult, page); - msEngEqService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } - - /** - * 导出 - * @param dataSourceRequest 数据源请求 - * @param response 响应 - */ - @PostMapping({"/export"}) - @Operation(summary = "导出") - public void export(@RequestBody DataSourceRequest dataSourceRequest, HttpServletResponse response) { - // 实际应该实现导出逻辑 - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngSpecialController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngSpecialController.java deleted file mode 100644 index 04aac605..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/controller/EngSpecialController.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.yfd.platform.qgc_eng.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.config.ResponseResult; -import com.yfd.platform.qgc_eng.entity.EqSpecial; -import com.yfd.platform.qgc_eng.service.EngSpecialService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * 电站专题-环保设施运行情况 - */ -@RestController -@RequestMapping("/eng/special") -@Tag(name = "电站专题-环保设施运行情况") -public class EngSpecialController { - - /** - * 服务对象 - */ - @Resource - private EngSpecialService engSpecialService; - - @PostMapping({"/GetKendoListCust"}) - @Operation(summary = "条件过滤数据列表定制") - public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { - Page page = new Page<>(dataSourceRequest.getPage(), dataSourceRequest.getPageSize()); - Map filterResult = null; // 实际应该根据业务需求处理筛选 - DataSourceResult dataSourceResult = engSpecialService.processKendoList(dataSourceRequest, filterResult, page); - engSpecialService.processKendoGetListLoadResult(dataSourceRequest, dataSourceResult); - return ResponseResult.successData(dataSourceResult); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/domain/MsEngEq.java b/backend/src/main/java/com/yfd/platform/qgc_eng/domain/MsEngEq.java deleted file mode 100644 index 6078be33..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/domain/MsEngEq.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.yfd.platform.qgc_eng.domain; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - * 生态流量实体类 - */ -@Data -@TableName("ms_eng_eq") -public class MsEngEq implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - private String id; - - /** - * 电站ID - */ - private String stationId; - - /** - * 电站名称 - */ - private String stationName; - - /** - * 时间 - */ - private Date time; - - /** - * 生态流量值 - */ - private Double eqValue; - - /** - * 达标状态 - */ - private String status; - - /** - * 统计类型(hour/day) - */ - private String type; - - /** - * 创建时间 - */ - private Date createTime; - - /** - * 更新时间 - */ - private Date updateTime; -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/EqSpecial.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/EqSpecial.java deleted file mode 100644 index d7d1ba24..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/EqSpecial.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.yfd.platform.qgc_eng.entity; - -import lombok.Data; - -/** - * 电站专题-环保设施运行情况 - */ -@Data -public class EqSpecial { - /** - * 主键 - */ - private String id; - - /** - * 电站ID - */ - private String stcd; - - /** - * 电站名称 - */ - private String stnm; - - /** - * 环保设施类型 - */ - private String eqType; - - /** - * 设施名称 - */ - private String eqName; - - /** - * 运行状态 - */ - private String status; - - /** - * 检查时间 - */ - private String checkTime; - - /** - * 检查人 - */ - private String checker; - - /** - * 备注 - */ - private String remark; -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/AlarmStcdCountVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/AlarmStcdCountVo.java deleted file mode 100644 index 01635f24..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/AlarmStcdCountVo.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.yfd.platform.qgc_eng.entity.vo; - -import lombok.Data; - -/** - * 警报锚点统计VO - */ -@Data -public class AlarmStcdCountVo { - /** - * 电站ID - */ - private String stcd; - - /** - * 电站名称 - */ - private String stnm; - - /** - * 警报数量 - */ - private Integer alarmCount; - - /** - * 未处理数量 - */ - private Integer unhandledCount; - - /** - * 处理中数量 - */ - private Integer handlingCount; - - /** - * 已处理数量 - */ - private Integer handledCount; -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDataVo.java deleted file mode 100644 index 2dc3c7bd..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDataVo.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.yfd.platform.qgc_eng.entity.vo; - -import lombok.Data; - -/** - * 生态流量小时数据VO - */ -@Data -public class EngEqDataVo { - /** - * 电站ID - */ - private String stcd; - - /** - * 电站名称 - */ - private String stnm; - - /** - * 时间 - */ - private String tm; - - /** - * 生态流量值 - */ - private Double eqValue; - - /** - * 状态 - */ - private String status; - - /** - * 不达标原因 - */ - private String reason; - - /** - * 限值 - */ - private Double limitValue; - - /** - * 限值来源 - */ - private String limitSource; - - /** - * 是否左边界 - */ - private Integer isLeft; -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDayDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDayDataVo.java deleted file mode 100644 index f349dcab..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDayDataVo.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.yfd.platform.qgc_eng.entity.vo; - -import lombok.Data; - -/** - * 生态流量日数据VO - */ -@Data -public class EngEqDayDataVo { - /** - * 电站ID - */ - private String stcd; - - /** - * 电站名称 - */ - private String stnm; - - /** - * 日期 - */ - private String tm; - - /** - * 日平均生态流量 - */ - private Double avgValue; - - /** - * 日最小生态流量 - */ - private Double minValue; - - /** - * 日最大生态流量 - */ - private Double maxValue; - - /** - * 状态 - */ - private String status; - - /** - * 不达标原因 - */ - private String reason; - - /** - * 限值 - */ - private Double limitValue; - - /** - * 限值来源 - */ - private String limitSource; -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDrtpDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDrtpDataVo.java deleted file mode 100644 index 64880657..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/entity/vo/EngEqDrtpDataVo.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.yfd.platform.qgc_eng.entity.vo; - -import lombok.Data; - -/** - * 生态流量周旬月季年数据VO - */ -@Data -public class EngEqDrtpDataVo { - /** - * 电站ID - */ - private String stcd; - - /** - * 电站名称 - */ - private String stnm; - - /** - * 时间 - */ - private String tm; - - /** - * 平均生态流量 - */ - private Double avgValue; - - /** - * 最小生态流量 - */ - private Double minValue; - - /** - * 最大生态流量 - */ - private Double maxValue; - - /** - * 状态 - */ - private String status; - - /** - * 不达标原因 - */ - private String reason; - - /** - * 限值 - */ - private Double limitValue; - - /** - * 限值来源 - */ - private String limitSource; -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java new file mode 100644 index 00000000..d5486ca4 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/controller/EngEqDataController.java @@ -0,0 +1,29 @@ +package com.yfd.platform.qgc_eng.eq.controller; + +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/eq/data") +@Tag(name = "电站实时数据查询") +@Validated +public class EngEqDataController { + + @Resource + private EngEqDataService engEqDataService; + + @PostMapping("/GetKendoListCust") + @Operation(summary = "生态流量沿程变化-小时") + public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(engEqDataService.getKendoListCust(dataSourceRequest)); + } +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqDataVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqDataVo.java new file mode 100644 index 00000000..653e0a1c --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqDataVo.java @@ -0,0 +1,129 @@ +package com.yfd.platform.qgc_eng.eq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "生态流量小时数据") +public class EngEqDataVo { + + @Schema(description = "主键") + private String id; + + @Schema(description = "电站编码") + private String stcd; + + @Schema(description = "电站名称") + private String stnm; + + @Schema(description = "电站名称") + private String ennm; + + @Schema(description = "数据时间") + private Date tm; + + @Schema(description = "入库流量") + private BigDecimal qi; + + @Schema(description = "出库流量") + private BigDecimal qo; + + @Schema(description = "生态流量限值(环保部)") + private BigDecimal qecLimit; + + @Schema(description = "生态流量") + private BigDecimal qec; + + @Schema(description = "生态流量限值(水利部)") + private BigDecimal mwrLimit; + + @Schema(description = "生态流量限值(多年平均)") + private BigDecimal avqLimit; + + @Schema(description = "生态流量系数(环保部)") + private BigDecimal qecC; + + @Schema(description = "生态流量系数(水利部)") + private BigDecimal mwrC; + + @Schema(description = "生态流量系数(多年平均)") + private BigDecimal avqC; + + @Schema(description = "生态流量是否达标(环保部)") + private Integer sfdb; + + @Schema(description = "生态流量是否达标(环保部)中文") + private String sfdbName; + + @Schema(description = "生态流量是否达标(水利部)") + private Integer mwrSfdb; + + @Schema(description = "生态流量是否达标(水利部)中文") + private String mwrSfdbName; + + @Schema(description = "生态流量是否达标(多年平均)") + private Integer avqSfdb; + + @Schema(description = "生态流量是否达标(多年平均)中文") + private String avqSfdbName; + + @Schema(description = "坝上水位") + private BigDecimal rz; + + @Schema(description = "坝下水位") + private BigDecimal dz; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "流域名称") + private String rvcdName; + + @Schema(description = "河段名称") + private String hbrvcdName; + + @Schema(description = "行政区名称") + private String addvcdName; + + @Schema(description = "AI识别生态流量值") + private BigDecimal qecAi; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "河段编码") + private String hbrvcd; + + @Schema(description = "公司编码") + private String hycd; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "建设状态分类") + private Integer bldsttCcode; + + @Schema(description = "环保部规则详情ID") + private String qecRuleDid; + + @Schema(description = "水利部规则详情ID") + private String qecMwrruleDid; + + @Schema(description = "去年同期生态流量") + private BigDecimal beforeQec; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java new file mode 100644 index 00000000..58dcf45f --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/EngEqDataService.java @@ -0,0 +1,9 @@ +package com.yfd.platform.qgc_eng.eq.service; + +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; + +public interface EngEqDataService { + + DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest); +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java new file mode 100644 index 00000000..5bc426e8 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -0,0 +1,473 @@ +package com.yfd.platform.qgc_eng.eq.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.platform.common.DataSourceLoadOptionsBase; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.common.GroupHelper; +import com.yfd.platform.common.GroupingInfo; +import com.yfd.platform.common.MicroservicDynamicSQLMapper; +import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDataVo; +import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; +import com.yfd.platform.utils.QgcQueryWrapperUtil; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@Service +public class EngEqDataServiceImpl implements EngEqDataService { + + @Resource + private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; + + @Override + public DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + return queryDetailList(dataSourceRequest, loadOptions); + } + return queryGroupList(dataSourceRequest, loadOptions); + } + + private DataSourceResult queryDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" ") + .append(buildFromSql()) + .append(" WHERE NVL(eng.IS_DELETED, 0) = 0 ") + .append(" AND NVL(sqr.IS_DELETED, 0) = 0 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + sql.append(buildDetailOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EngEqDataVo.class); + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + private DataSourceResult queryGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + StringBuilder sql = new StringBuilder(); + List groups = dataSourceRequest.getGroup(); + GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); + + sql.append("SELECT "); + List selectItems = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapEqColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + selectItems.add(column + " AS " + descriptor.getField().toUpperCase()); + selectItems.add("COUNT(*) AS COUNT_" + descriptor.getField().toUpperCase()); + if (CollUtil.isNotEmpty(descriptor.getAggregates())) { + for (DataSourceRequest.AggregateDescriptor aggregate : descriptor.getAggregates()) { + String aggregateColumn = mapEqColumn(aggregate.getField()); + if (StrUtil.isBlank(aggregateColumn) || StrUtil.isBlank(aggregate.getAggregate())) { + continue; + } + selectItems.add(buildAggregateSql(aggregate.getAggregate(), aggregateColumn, aggregate.getField())); + } + } + } + if (selectItems.isEmpty()) { + selectItems.add("eng.STCD AS STCD"); + selectItems.add("COUNT(*) AS COUNT_STCD"); + } + sql.append(String.join(", ", selectItems)).append(" "); + sql.append(buildFromSql()) + .append(" WHERE NVL(eng.IS_DELETED, 0) = 0 ") + .append(" AND NVL(sqr.IS_DELETED, 0) = 0 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + List groupByColumns = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapEqColumn(descriptor.getField()); + if (StrUtil.isNotBlank(column)) { + groupByColumns.add(column); + } + } + if (!groupByColumns.isEmpty()) { + sql.append(" GROUP BY ").append(String.join(", ", groupByColumns)).append(" "); + } + sql.append(buildGroupOrderBySql(groups)); + + List> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap); + DataSourceResult result = new DataSourceResult(); + if (dataSourceRequest.getGroupResultFlat() != null && dataSourceRequest.getGroupResultFlat()) { + result.setData(new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData(new GroupHelper().group(rows, Arrays.asList(groupInfos))); + } + result.setTotal(0L); + result.setAggregates(new HashMap<>()); + return result; + } + + private String buildFromSql() { + return " FROM SD_ENGINFO_B_H eng " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " + + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + + "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") rstSort ON rstSort.RVCD = eng.HBRVCD " + + " AND rstSort.STCD = eng.STCD "+ + "LEFT JOIN ( " + + " SELECT det.SORT, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") siteSort ON siteSort.RVCD = eng.HBRVCD AND siteSort.STCD = eng.STCD " + + "INNER JOIN SD_QEC_R sqr ON sqr.STCD = eng.STCD " + + "LEFT JOIN SD_HYDROPW_R shr ON shr.STCD = sqr.STCD AND shr.TM = sqr.TM AND NVL(shr.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_QEC_R bsqr ON bsqr.STCD = sqr.STCD AND ADD_MONTHS(bsqr.TM, 12) = sqr.TM AND NVL(bsqr.IS_DELETED, 0) = 0 "; + } + + private String buildDetailSelectSql(List selectFields) { + Map columns = detailFieldColumns(); + List selected = new ArrayList<>(); + if (CollUtil.isEmpty(selectFields)) { + selected.addAll(columns.values()); + } else { + for (String field : selectFields) { + String column = columns.get(field); + if (StrUtil.isNotBlank(column)) { + selected.add(column); + } + } + if (selected.isEmpty()) { + selected.addAll(columns.values()); + } + } + return String.join(", ", selected); + } + + private Map detailFieldColumns() { + Map columns = new LinkedHashMap<>(); + columns.put("id", "sqr.ID AS id"); + columns.put("stcd", "eng.STCD AS stcd"); + columns.put("stnm", "eng.ENNM AS stnm"); + columns.put("ennm", "eng.ENNM AS ennm"); + columns.put("tm", "sqr.TM AS tm"); + columns.put("qi", "shr.QI AS qi"); + columns.put("qo", "shr.QO AS qo"); + columns.put("qecLimit", "sqr.QEC_LIMIT AS qecLimit"); + columns.put("qec", "sqr.QEC AS qec"); + columns.put("mwrLimit", "sqr.MWR_LIMIT AS mwrLimit"); + columns.put("avqLimit", "eng.AVQ AS avqLimit"); + columns.put("qecC", "sqr.QEC_C AS qecC"); + columns.put("mwrC", "sqr.MWR_C AS mwrC"); + columns.put("avqC", "sqr.AVQ_C AS avqC"); + columns.put("sfdb", "sqr.SFDB AS sfdb"); + columns.put("sfdbName", "CASE NVL(sqr.SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS sfdbName"); + columns.put("mwrSfdb", "sqr.MWR_SFDB AS mwrSfdb"); + columns.put("mwrSfdbName", "CASE NVL(sqr.MWR_SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS mwrSfdbName"); + columns.put("avqSfdb", "sqr.AVQ_SFDB AS avqSfdb"); + columns.put("avqSfdbName", "CASE NVL(sqr.AVQ_SFDB, -1) WHEN 0 THEN '不达标' WHEN 1 THEN '达标' WHEN 2 THEN '无生态流量数据' WHEN 3 THEN '无生态流量限值要求' ELSE NULL END AS avqSfdbName"); + columns.put("rz", "shr.RZ AS rz"); + columns.put("dz", "shr.DZ AS dz"); + columns.put("baseName", "hb.BASENAME AS baseName"); + columns.put("rvcdName", "rv.RVNM AS rvcdName"); + columns.put("hbrvcdName", "hbrv.HBRVNM AS hbrvcdName"); + columns.put("addvcdName", "addv.ADDVNM AS addvcdName"); + columns.put("qecAi", "sqr.WATERFLOW AS qecAi"); + columns.put("baseId", "eng.BASE_ID AS baseId"); + columns.put("hbrvcd", "eng.HBRVCD AS hbrvcd"); + columns.put("hycd", "eng.HYCD AS hycd"); + columns.put("rvcd", "eng.RVCD AS rvcd"); + columns.put("bldsttCcode", "eng.BLDSTT_CODE AS bldsttCcode"); + columns.put("qecRuleDid", "sqr.QEC_RULE_DID AS qecRuleDid"); + columns.put("qecMwrruleDid", "sqr.QEC_MWRRULE_DID AS qecMwrruleDid"); + columns.put("beforeQec", "bsqr.QEC AS beforeQec"); + columns.put("baseStepSort", "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort"); + columns.put("rvcdStepSort", "NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort"); + columns.put("rstcdStepSort", "NVL(rstSort.SORT, 999999) AS rstcdStepSort"); + columns.put("siteStepSort", "NVL(siteSort.SORT, 999999) AS siteStepSort"); + return columns; + } + + private String buildDetailOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, tm DESC"; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sort : sortList) { + if (sort == null || StrUtil.isBlank(sort.getField())) { + continue; + } + String column = mapOrderColumn(sort.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + if (orders.isEmpty()) { + return " ORDER BY baseStepSort ASC, rvcdStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, tm DESC"; + } + return " ORDER BY " + String.join(", ", orders); + } + + private String buildGroupOrderBySql(List groups) { + if (CollUtil.isEmpty(groups)) { + return ""; + } + List orders = new ArrayList<>(); + for (DataSourceRequest.GroupDescriptor descriptor : groups) { + if (descriptor == null || StrUtil.isBlank(descriptor.getField())) { + continue; + } + String column = mapEqColumn(descriptor.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(descriptor.getDir()) || "des".equalsIgnoreCase(descriptor.getDir()) ? "DESC" : "ASC"; + orders.add(column + " " + dir); + } + return orders.isEmpty() ? "" : " ORDER BY " + String.join(", ", orders); + } + + private String buildAggregateSql(String aggregate, String column, String field) { + String normalized = aggregate == null ? "" : aggregate.toLowerCase(); + return switch (normalized) { + case "sum", "min", "max", "avg", "count" -> normalized.toUpperCase() + "(" + column + ") AS " + normalized + "_" + field; + default -> ""; + }; + } + + private String buildFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + return buildLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String field = filter.getField(); + String column = mapEqColumn(field); + if (StrUtil.isBlank(column)) { + return ""; + } + String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase(); + Object value = filter.getValue(); + if ("isnull".equals(operator)) { + return column + " IS NULL"; + } + if ("isnotnull".equals(operator)) { + return column + " IS NOT NULL"; + } + boolean dateField = isEqDateField(field); + if ("in".equals(operator)) { + List values = normalizeValues(value); + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + String key = "eqParam" + indexHolder[0]++; + paramMap.put(key, item); + placeholders.add(buildEqValueExpr(key, dateField, item)); + } + return column + " IN (" + String.join(", ", placeholders) + ")"; + } + if ("vdid".equalsIgnoreCase(field)) { + return ""; + } + if (value == null) { + return ""; + } + String key = "eqParam" + indexHolder[0]++; + String valueExpr = buildEqValueExpr(key, dateField, value); + return switch (operator) { + case "eq" -> { + paramMap.put(key, value); + yield column + " = " + valueExpr; + } + case "neq" -> { + paramMap.put(key, value); + yield column + " <> " + valueExpr; + } + case "contains" -> { + paramMap.put(key, "%" + value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "startswith" -> { + paramMap.put(key, value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "endswith" -> { + paramMap.put(key, "%" + value); + yield column + " LIKE #{map." + key + "}"; + } + case "gt" -> { + paramMap.put(key, value); + yield column + " > " + valueExpr; + } + case "gte" -> { + paramMap.put(key, value); + yield column + " >= " + valueExpr; + } + case "lt" -> { + paramMap.put(key, value); + yield column + " < " + valueExpr; + } + case "lte" -> { + paramMap.put(key, value); + yield column + " <= " + valueExpr; + } + default -> ""; + }; + } + + private boolean isEqDateField(String field) { + return "tm".equalsIgnoreCase(field); + } + + private String buildEqValueExpr(String paramKey, boolean dateField, Object value) { + if (!dateField || value == null) { + return "#{map." + paramKey + "}"; + } + String text = String.valueOf(value).trim(); + if (text.length() <= 10) { + return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD')"; + } + return "TO_DATE(#{map." + paramKey + "}, 'YYYY-MM-DD HH24:MI:SS')"; + } + + + + + private List normalizeValues(Object value) { + List values = new ArrayList<>(); + if (value instanceof List list) { + for (Object item : list) { + if (item != null) { + values.add(item); + } + } + return values; + } + if (value instanceof Object[] array) { + for (Object item : array) { + if (item != null) { + values.add(item); + } + } + return values; + } + if (value != null) { + values.add(value); + } + return values; + } + + private String mapEqColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "baseName" -> "hb.BASENAME"; + case "stnm", "ennm" -> "eng.ENNM"; + case "baseId" -> "eng.BASE_ID"; + case "rvcdName" -> "rv.RVNM"; + case "addvcdName" -> "addv.ADDVNM"; + case "stcd" -> "eng.STCD"; + case "tm" -> "sqr.TM"; + case "rz" -> "shr.RZ"; + case "qec" -> "sqr.QEC"; + case "sfdb" -> "sqr.SFDB"; + case "qi" -> "shr.QI"; + case "qo" -> "shr.QO"; + case "dz" -> "shr.DZ"; + case "qecLimit" -> "sqr.QEC_LIMIT"; + case "hbrvcd" -> "eng.HBRVCD"; + case "hbrvcdName" -> "hbrv.HBRVNM"; + case "rvcdStepSort" -> "NVL(along.ORDER_INDEX, 999999)"; + case "rstcdStepSort" -> "NVL(rstSort.SORT, 999999)"; + case "siteStepSort" -> "NVL(siteSort.SORT, 999999)"; + case "hycd" -> "eng.HYCD"; + case "rvcd" -> "eng.HBRVCD"; + case "bldsttCcode" -> "eng.BLDSTT_CODE"; + case "baseStepSort" -> "NVL(hb.ORDER_INDEX, 999999)"; + case "mwrLimit" -> "sqr.MWR_LIMIT"; + case "avqLimit" -> "eng.AVQ"; + case "mwrSfdb" -> "sqr.MWR_SFDB"; + case "avqSfdb" -> "sqr.AVQ_SFDB"; + case "qecC" -> "sqr.QEC_C"; + case "mwrC" -> "sqr.MWR_C"; + case "avqC" -> "sqr.AVQ_C"; + case "qecAi" -> "sqr.WATERFLOW"; + default -> null; + }; + } + + private String mapOrderColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "baseStepSort", "rvcdStepSort", "rstcdStepSort", "siteStepSort", + "tm", "stcd", "stnm", "ennm", "qi", "qo", "qec", "sfdb", + "rz", "dz", "qecLimit", "mwrLimit", "avqLimit", "baseName", + "rvcdName", "hbrvcdName", "addvcdName", "qecAi" -> field; + default -> null; + }; + } +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/mapper/EngEqMapper.java b/backend/src/main/java/com/yfd/platform/qgc_eng/mapper/EngEqMapper.java deleted file mode 100644 index e981c49b..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/mapper/EngEqMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.yfd.platform.qgc_eng.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yfd.platform.qgc_eng.domain.MsEngEq; -import org.apache.ibatis.annotations.Select; - -import java.util.Map; - -/** - * 生态流量Mapper - */ -public interface EngEqMapper extends BaseMapper { - - /** - * 根据条件查询生态流量数据 - * @param params 查询参数 - * @return 生态流量列表 - */ - @Select("select * from ms_eng_eq where 1=1") - Object queryList(Map params); -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/AlarmPointService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/AlarmPointService.java deleted file mode 100644 index b2506a18..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/AlarmPointService.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.yfd.platform.qgc_eng.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.qgc_eng.entity.vo.AlarmStcdCountVo; - -import java.util.Map; - -/** - * 警报锚点服务 - */ -public interface AlarmPointService { - - /** - * 处理kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @return 数据源结果 - */ - DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page); - - /** - * 处理kendo返回列表字典匹配 - * @param dataSourceRequest 数据源请求 - * @param dataSourceResult 数据源结果 - */ - void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult); - - /** - * 获取警报统计数据 - * @param stcd 电站ID - * @return 统计结果 - */ - AlarmStcdCountVo getAlarmCount(String stcd); -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqDataService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqDataService.java deleted file mode 100644 index 4b9218ba..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqDataService.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.yfd.platform.qgc_eng.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; - -import java.util.Map; - -/** - * 生态流量数据服务 - */ -public interface EngEqDataService { - - /** - * 处理kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @return 数据源结果 - */ - DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page); - - /** - * 处理kendo返回列表字典匹配 - * @param dataSourceRequest 数据源请求 - * @param dataSourceResult 数据源结果 - */ - void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult); - - /** - * 处理分组条件SQL - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @return SQL条件 - */ - String processGroupConditionSql(DataSourceRequest dataSourceRequest, Map filterResult); - - /** - * 处理日数据kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @param groupBy 分组 - * @return 数据源结果 - */ - DataSourceResult processDayKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy); - - /** - * 处理周旬月季年数据kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @param groupBy 分组 - * @return 数据源结果 - */ - DataSourceResult processKendoDrtpList(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy); - - /** - * 查询沿程第一个电站的生态流量数据时间 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @param groupBy 分组 - * @return 数据源结果 - */ - DataSourceResult getFastSiteLastData(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy); - - /** - * 根据时间范围查询电站生态流量限值及来源 - * @param dataSourceRequest 数据源请求 - * @return 生态流量限值VO - */ - Object getEngLimit(DataSourceRequest dataSourceRequest); -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqIntervalService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqIntervalService.java deleted file mode 100644 index 2c4512e3..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqIntervalService.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.yfd.platform.qgc_eng.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.common.GroupResult; -import com.yfd.platform.qgc_eng.domain.MsEngEq; - -import java.util.Map; - -/** - * 生态流量区间统计服务 - */ -public interface EngEqIntervalService { - - /** - * 处理kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @return 数据源结果 - */ - DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page); - - /** - * 处理kendo返回列表字典匹配 - * @param dataSourceRequest 数据源请求 - * @param dataSourceResult 数据源结果 - */ - void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult); - - /** - * 生态流量达标率 小时统计 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @param groupBy 分组 - * @return 数据源结果 - */ - DataSourceResult getQgcHourKendoListCust(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy); - - /** - * 生态流量达标率 日统计 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @param groupBy 分组 - * @return 数据源结果 - */ - DataSourceResult getQgcDayKendoListCust(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy); - - /** - * 生态流量达标率 区间范围统计 - * @param dataList 数据列表 - * @param type 类型(hour/day) - * @return 统计结果 - */ - Map getQgcQecStaticData(Object dataList, String type); -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqService.java deleted file mode 100644 index 79888918..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngEqService.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.yfd.platform.qgc_eng.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.IService; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.common.GroupResult; -import com.yfd.platform.qgc_eng.domain.MsEngEq; - - -import java.util.Map; - -/** - * 生态流量服务 - */ -public interface EngEqService extends IService { - - /** - * 处理kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @return 数据源结果 - */ - DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page); - - /** - * 处理kendo返回列表字典匹配 - * @param dataSourceRequest 数据源请求 - * @param dataSourceResult 数据源结果 - */ - void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult); - - /** - * 处理分组条件SQL - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @return SQL条件 - */ - String processGroupConditionSql(DataSourceRequest dataSourceRequest, Map filterResult); - - /** - * 月统计数据有数据的电站 - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult lastEngDataSite(DataSourceRequest dataSourceRequest); - - /** - * 获取生态流量默认有数据的电站 - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult getDefaultStcd(DataSourceRequest dataSourceRequest); - - /** - * 获取不达标详情数据 - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult getSfdbInfo(DataSourceRequest dataSourceRequest); - - /** - * 生态流量不达标测站数 - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult qecSfdbCountByStcd(DataSourceRequest dataSourceRequest); - - /** - * 生态流量达标率计算(基地维度、不达标原因维度) - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult qecRateCount(DataSourceRequest dataSourceRequest); - - /** - * 生态流量不达标数量计算(电站维度、不达标原因维度) - * @param dataSourceRequest 数据源请求 - * @return 数据源结果 - */ - DataSourceResult qecSfdbCount(DataSourceRequest dataSourceRequest); -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngSpecialService.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngSpecialService.java deleted file mode 100644 index 24b6d66c..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/EngSpecialService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.yfd.platform.qgc_eng.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.qgc_eng.entity.EqSpecial; - -import java.util.Map; - -/** - * 电站专题-环保设施运行情况服务 - */ -public interface EngSpecialService { - - /** - * 处理kendo列表 - * @param dataSourceRequest 数据源请求 - * @param filterResult 筛选结果 - * @param page 分页 - * @return 数据源结果 - */ - DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page); - - /** - * 处理kendo返回列表字典匹配 - * @param dataSourceRequest 数据源请求 - * @param dataSourceResult 数据源结果 - */ - void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult); -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/AlarmPointServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/AlarmPointServiceImpl.java deleted file mode 100644 index 20b8cde1..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/AlarmPointServiceImpl.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.yfd.platform.qgc_eng.service.impl; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.qgc_eng.entity.vo.AlarmStcdCountVo; -import com.yfd.platform.qgc_eng.service.AlarmPointService; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * 警报锚点服务实现 - */ -@Service -public class AlarmPointServiceImpl implements AlarmPointService { - - @Override - public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page) { - // 模拟数据,实际应该从数据库查询 - List dataList = new ArrayList<>(); - // 模拟添加一些数据 - AlarmStcdCountVo vo1 = new AlarmStcdCountVo(); - vo1.setStcd("ST001"); - vo1.setStnm("电站1"); - vo1.setAlarmCount(10); - vo1.setUnhandledCount(3); - vo1.setHandlingCount(2); - vo1.setHandledCount(5); - dataList.add(vo1); - - AlarmStcdCountVo vo2 = new AlarmStcdCountVo(); - vo2.setStcd("ST002"); - vo2.setStnm("电站2"); - vo2.setAlarmCount(8); - vo2.setUnhandledCount(2); - vo2.setHandlingCount(1); - vo2.setHandledCount(5); - dataList.add(vo2); - - DataSourceResult result = new DataSourceResult<>(); - result.setData(dataList); - result.setTotal(dataList.size()); - return result; - } - - @Override - public void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult) { - // 处理字典匹配,实际应该根据业务需求实现 - } - - @Override - public AlarmStcdCountVo getAlarmCount(String stcd) { - // 模拟数据,实际应该从数据库查询 - AlarmStcdCountVo vo = new AlarmStcdCountVo(); - vo.setStcd(stcd); - vo.setStnm("电站" + stcd); - vo.setAlarmCount(5); - vo.setUnhandledCount(1); - vo.setHandlingCount(1); - vo.setHandledCount(3); - return vo; - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqDataServiceImpl.java deleted file mode 100644 index dccc72c7..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqDataServiceImpl.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.yfd.platform.qgc_eng.service.impl; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.qgc_eng.service.EngEqDataService; - -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.Map; - -/** - * 生态流量数据服务实现 - */ -@Service -public class EngEqDataServiceImpl implements EngEqDataService { - - @Override - public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult) { - // 处理字典匹配,实际应该根据业务需求实现 - } - - @Override - public String processGroupConditionSql(DataSourceRequest dataSourceRequest, Map filterResult) { - // 模拟SQL条件,实际应该根据业务需求实现 - return "1=1"; - } - - @Override - public DataSourceResult processDayKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult processKendoDrtpList(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult getFastSiteLastData(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public Object getEngLimit(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - return null; - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqIntervalServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqIntervalServiceImpl.java deleted file mode 100644 index f8168546..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqIntervalServiceImpl.java +++ /dev/null @@ -1,169 +0,0 @@ -package com.yfd.platform.qgc_eng.service.impl; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.*; -import com.yfd.platform.common.enums.QecIntervalEnum; -import com.yfd.platform.common.enums.ShowEnum; -import com.yfd.platform.qgc_eng.domain.MsEngEq; -import com.yfd.platform.qgc_eng.service.EngEqIntervalService; -import com.yfd.platform.utils.QueryWrapperUtil; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; - -import java.util.*; - -/** - * 生态流量区间统计服务实现 - */ -@Service -public class EngEqIntervalServiceImpl implements EngEqIntervalService { - @Resource - private DynamicSQLMapper dynamicSQLMapper; - @Override - public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page) { - // 模拟数据,实际应该从数据库查询 - List dataList = new ArrayList<>(); - DataSourceResult result = new DataSourceResult(); - result.setData(dataList); - result.setTotal(0L); - return result; - } - - @Override - public void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult) { - // 处理字典匹配,实际应该根据业务需求实现 - } - - @Override - public DataSourceResult getQgcHourKendoListCust(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy) { - DataSourceResult dataSourceResult = new DataSourceResult<>(); - DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); - StringBuilder sql = new StringBuilder(); - - sql.append("select AVQ_POINT_STATE as avqPointState, ENNM as ennm, RZ as rz, HBRVCD_NAME as hbrvcdName, QEC_INTERVAL as qecInterval, LTTD as lttd, BASE_ID as baseId, ANCHO_POINT_STATE as anchoPointState, HBRVCD as hbrvcd, MWR_RATE as mwrRate, SITESTEPSORT as siteStepSort, AVQ_INTERVAL as avqInterval, TTPWR as ttpwr, QI as qi, LGTD as lgtd, STTP_CODE as sttpCode, QEC_RATE as qecRate, BASESTEPSORT as baseStepSort, BASE_NAME as baseName, AVQ as avq, QO as qo, MWR_POINT_STATE as mwrPointState, QO_SUM as qoSum, orderIndex as orderindex, DTIN_ENV as dtinEnv, RVCDSTEPSORT as rvcdStepSort, sttp as sttp, AVQ_RATE as avqRate, DTMEL as dtmel, STCD as stcd, RSTCDSTEPSORT as rstcdStepSort, ADDVCD_NAME as addvcdName, QI_SUM as qiSum, MWR_INTERVAL as mwrInterval, NORMZ as normz"); - sql.append(" FROM "); - sql.append("(select MSB.STCD,MSB.STNM as ENNM,MSB.BASESTEPSORT,MSB.SITESTEPSORT,MSB.RVCDSTEPSORT,MSB.RSTCDSTEPSORT ,MSB.BASE_NAME,MSB.BASE_ID,MSB.ORDER_INDEX orderIndex,MSB.HBRVCD ,MSB.HBRVCD_NAME,MSB.ADDVCD_NAME ,MSB.STTP_CODE,'ENG' as sttp,MSB.LGTD,MSB.LTTD,MSB.DTMEL ,MSB.TTPWR,MSB.NORMZ,MSB.DTIN_ENV,MSB.AVQ ,SQR.QEC_RATE,SQR.MWR_RATE,SQR.AVQ_RATE,SHR.QI,SHR.QO,SHR.RZ,SHR.QO_SUM,SHR.QI_SUM,(CASE WHEN SQR.STCD IS NULL and qecR.stcd is null THEN 'QEC_STLL_5_EMPTY' WHEN SQR.STCD IS NULL and qecR.stcd is not null THEN 'QEC_STLL_6_NOEQMN' WHEN SQR.STCD IS NOT NULL AND SQR.QR = -2 THEN 'QEC_STLL_6_NOEQMN' WHEN SQR.STCD IS NOT NULL AND SQR.QR = -1 THEN 'QEC_STLL_5_EMPTY' WHEN SQR.QEC_RATE >= 95 THEN 'QEC_STLL_1_DY95' WHEN SQR.QEC_RATE >= 90 AND 95 > SQR.QEC_RATE THEN 'QEC_STLL_2_90AND95' WHEN SQR.QEC_RATE >= 80 AND 90 > SQR.QEC_RATE THEN 'QEC_STLL_3_80AND90' WHEN 80 > SQR.QEC_RATE THEN 'QEC_STLL_4_XY80' END) AS QEC_INTERVAL ,(CASE WHEN SQR.STCD IS NULL and mwrR.stcd is null THEN 'QEC_STLL_5_EMPTY' WHEN SQR.STCD IS NULL and mwrR.stcd is not null THEN 'QEC_STLL_6_NOEQMN' WHEN SQR.STCD IS NOT NULL AND SQR.MQR = -2 THEN 'QEC_STLL_6_NOEQMN' WHEN SQR.STCD IS NOT NULL AND SQR.MQR = -1 THEN 'QEC_STLL_5_EMPTY' WHEN SQR.MWR_RATE >= 95 THEN 'QEC_STLL_1_DY95' WHEN SQR.MWR_RATE >= 90 AND 95 > SQR.MWR_RATE THEN 'QEC_STLL_2_90AND95' WHEN SQR.MWR_RATE >= 80 AND 90 > SQR.MWR_RATE THEN 'QEC_STLL_3_80AND90' WHEN 80 > SQR.MWR_RATE THEN 'QEC_STLL_4_XY80' END) AS MWR_INTERVAL ,(CASE WHEN MSB.AVQ is not null AND SQR.AVQ_RATE IS NULL THEN 'QEC_STLL_5_EMPTY' WHEN MSB.AVQ is null THEN 'QEC_STLL_6_NOEQMN' WHEN SQR.AVQ_RATE >= 95 THEN 'QEC_STLL_1_DY95' WHEN SQR.AVQ_RATE >= 90 AND 95 > SQR.AVQ_RATE THEN 'QEC_STLL_2_90AND95' WHEN SQR.AVQ_RATE >= 80 AND 90 > SQR.AVQ_RATE THEN 'QEC_STLL_3_80AND90' WHEN 80 > SQR.AVQ_RATE THEN 'QEC_STLL_4_XY80' END) AS AVQ_INTERVAL ,(case when SQR.QEC_RATE is null and MSB.PRSC = 1 then 'eef_1_none' when SQR.QEC_RATE >=95 and MSB.PRSC = 1 then 'eef_1_1' when SQR.QEC_RATE >=90 and 95 > SQR.QEC_RATE and MSB.PRSC = 1 then 'eef_1_2' when SQR.QEC_RATE >=80 and 90 > SQR.QEC_RATE and MSB.PRSC = 1 then 'eef_1_3' when 80 > SQR.QEC_RATE and MSB.PRSC = 1 then 'eef_1_4' when SQR.QEC_RATE is null and MSB.PRSC in (2,3) then 'eef_2_none' when SQR.QEC_RATE >=95 and MSB.PRSC in (2,3) then 'eef_2_1' when SQR.QEC_RATE >=90 and 95 > SQR.QEC_RATE and MSB.PRSC in (2,3) then 'eef_2_2' when SQR.QEC_RATE >=80 and 90 > SQR.QEC_RATE and MSB.PRSC in (2,3) then 'eef_2_3' when 80 > SQR.QEC_RATE and MSB.PRSC in (2,3) then 'eef_2_4' end) as ANCHO_POINT_STATE ,(case when SQR.MWR_RATE is null and MSB.PRSC = 1 then 'eef_1_none' when SQR.MWR_RATE >=95 and MSB.PRSC = 1 then 'eef_1_1' when SQR.MWR_RATE >=90 and 95 > SQR.MWR_RATE and MSB.PRSC = 1 then 'eef_1_2' when SQR.MWR_RATE >=80 and 90 > SQR.MWR_RATE and MSB.PRSC = 1 then 'eef_1_3' when 80 > SQR.MWR_RATE and MSB.PRSC = 1 then 'eef_1_4' when SQR.MWR_RATE is null and MSB.PRSC in (2,3) then 'eef_2_none' when SQR.MWR_RATE >=95 and MSB.PRSC in (2,3) then 'eef_2_1' when SQR.MWR_RATE >=90 and 95 > SQR.MWR_RATE and MSB.PRSC in (2,3) then 'eef_2_2' when SQR.MWR_RATE >=80 and 90 > SQR.MWR_RATE and MSB.PRSC in (2,3) then 'eef_2_3' when 80 > SQR.MWR_RATE and MSB.PRSC in (2,3) then 'eef_2_4' end) as MWR_POINT_STATE ,(case when SQR.AVQ_RATE is null and MSB.PRSC = 1 then 'eef_1_none' when SQR.AVQ_RATE >=95 and MSB.PRSC = 1 then 'eef_1_1' when SQR.AVQ_RATE >=90 and 95 > SQR.AVQ_RATE and MSB.PRSC = 1 then 'eef_1_2' when SQR.AVQ_RATE >=80 and 90 > SQR.AVQ_RATE and MSB.PRSC = 1 then 'eef_1_3' when 80 > SQR.AVQ_RATE and MSB.PRSC = 1 then 'eef_1_4' when SQR.AVQ_RATE is null and MSB.PRSC in (2,3) then 'eef_2_none' when SQR.AVQ_RATE >=95 and MSB.PRSC in (2,3) then 'eef_2_1' when SQR.AVQ_RATE >=90 and 95 > SQR.AVQ_RATE and MSB.PRSC in (2,3) then 'eef_2_2' when SQR.AVQ_RATE >=80 and 90 > SQR.AVQ_RATE and MSB.PRSC in (2,3) then 'eef_2_3' when 80 > SQR.AVQ_RATE and MSB.PRSC in (2,3) then 'eef_2_4' end) as AVQ_POINT_STATE from V_MS_STBPRP_T MSB left join (select STCD ,(case when sum(case when SFDB =1 or SFDB =0 then 1 else 0 end) =0 then null else (sum(case when SFDB =1 then 1 else 0 end)/sum(case when SFDB =1 or SFDB =0 then 1 else 0 end)) end)*100 QEC_RATE ,(case when sum(case when MWR_SFDB =1 or MWR_SFDB =0 then 1 else 0 end) =0 then null else (sum(case when MWR_SFDB =1 then 1 else 0 end)/sum(case when MWR_SFDB =1 or MWR_SFDB =0 then 1 else 0 end)) end)*100 MWR_RATE ,(case when sum(case when AVQ_SFDB =1 or AVQ_SFDB =0 then 1 else 0 end) =0 then null else (sum(case when AVQ_SFDB =1 then 1 else 0 end)/sum(case when AVQ_SFDB =1 or AVQ_SFDB =0 then 1 else 0 end)) end)*100 AVQ_RATE ,case when count(1)=sum(case when SFDB =2 then 1 else 0 end) then -1 when count(1)=sum(case when SFDB =3 then 1 else 0 end) then -2 WHEN sum(CASE WHEN SFDB = 2 THEN 1 ELSE 0 END) >0 and count(1) = sum(CASE WHEN SFDB = 2 THEN 1 ELSE 0 END)+sum(CASE WHEN SFDB = 3 THEN 1 ELSE 0 END)+sum(CASE WHEN SFDB is null THEN 1 ELSE 0 END) then -1 WHEN sum(CASE WHEN SFDB = 2 THEN 1 ELSE 0 END) =0 and count(1) = sum(CASE WHEN SFDB = 2 THEN 1 ELSE 0 END)+sum(CASE WHEN SFDB = 3 THEN 1 ELSE 0 END)+sum(CASE WHEN SFDB is null THEN 1 ELSE 0 END) then -2 end qr ,case when count(1)=sum(case when MWR_SFDB =2 then 1 else 0 end) then -1 when count(1)=sum(case when MWR_SFDB =3 then 1 else 0 end) then -2 WHEN sum(CASE WHEN MWR_SFDB = 2 THEN 1 ELSE 0 END) >0 and count(1) = sum(CASE WHEN MWR_SFDB = 2 THEN 1 ELSE 0 END)+sum(CASE WHEN MWR_SFDB = 3 THEN 1 ELSE 0 END)+sum(CASE WHEN MWR_SFDB is null THEN 1 ELSE 0 END) then -1 WHEN sum(CASE WHEN MWR_SFDB = 2 THEN 1 ELSE 0 END) =0 and count(1) = sum(CASE WHEN MWR_SFDB = 2 THEN 1 ELSE 0 END)+sum(CASE WHEN MWR_SFDB = 3 THEN 1 ELSE 0 END)+sum(CASE WHEN MWR_SFDB is null THEN 1 ELSE 0 END) then -2 end mqr ,case when count(1)=sum(case when AVQ_SFDB =2 then 1 else 0 end) then -1 when count(1)=sum(case when AVQ_SFDB =3 then 1 else 0 end) then -2 end aqr from SD_QEC_R where 1=1 "); - Map params = QueryWrapperUtil.buildSqlConditionsByField(loadOptions); - if(StrUtil.isNotBlank(params.get("TM"))){ - sql.append(" and ").append(params.get("TM")); - } - sql.append(" group by STCD) SQR on MSB.STCD=SQR.STCD left join (SELECT stcd, avg(QI) QI, avg(QO) QO, avg(qec) qec,avg(RZ) RZ,SUM(QI) QI_SUM,SUM(QO) QO_SUM from SD_HYDROPW_R where 1=1 "); - if(StrUtil.isNotBlank(params.get("TM"))){ - sql.append(" and ").append(params.get("TM")); - } - sql.append(" group by STCD) SHR on SHR.STCD = MSB.STCD left join (select STCD from MS_STBPRP_T where is_deleted=0 and sttp_code ='ENG' and stcd not in (select distinct A.STCD from MS_WARN_RULE_STBPRP_B a INNER JOIN MS_WARN_RULE_DETAIL_B b ON a.RULE_ID = b.RULE_ID and b.is_deleted=0 INNER JOIN MS_WARN_RULE_B c ON c.ID = b.RULE_ID where a.is_deleted=0 and b.is_deleted=0 and c.RULE_TYPE in('EQMN') and c.is_deleted=0)) qecR on qecR.STCD =MSB.STCD left join (select STCD from MS_STBPRP_T where is_deleted=0 and sttp_code ='ENG' and stcd not in (select distinct A.STCD from MS_WARN_RULE_STBPRP_B a INNER JOIN MS_WARN_RULE_DETAIL_B b ON a.RULE_ID = b.RULE_ID and b.is_deleted=0 INNER JOIN MS_WARN_RULE_B c ON c.ID = b.RULE_ID where a.is_deleted=0 and b.is_deleted=0 and c.RULE_TYPE in('EQMNMWR') and c.is_deleted=0)) mwrR on mwrR.STCD =MSB.STCD where MSB.STTP_CODE='ENG' and MSB.DTIN=1 and MSB.IS_DELETED = 0 and MSB.BLDSTT_CCODE = 2 and MSB.RUN_STATE=4 )"); - sql.append(" where 1=1 "); - -// sql.append(" and select AVQ_POINT_STATE as avqPointState, ENNM as ennm, RZ as rz, HBRVCD_NAME as hbrvcdName, QEC_INTERVAL as qecInterval, LTTD as lttd, BASE_ID as baseId, ANCHO_POINT_STATE as anchoPointState, HBRVCD as hbrvcd, MWR_RATE as mwrRate, SITESTEPSORT as siteStepSort, AVQ_INTERVAL as avqInterval, TTPWR as ttpwr, QI as qi, LGTD as lgtd, STTP_CODE as sttpCode, QEC_RATE as qecRate, BASESTEPSORT as baseStepSort, BASE_NAME as baseName, AVQ as avq, QO as qo, MWR_POINT_STATE as mwrPointState, QO_SUM as qoSum, orderIndex as orderindex, DTIN_ENV as dtinEnv, RVCDSTEPSORT as rvcdStepSort, sttp as sttp, AVQ_RATE as avqRate, DTMEL as dtmel, STCD as stcd, RSTCDSTEPSORT as rstcdStepSort, ADDVCD_NAME as addvcdName, QI_SUM as qiSum, MWR_INTERVAL as mwrInterval, NORMZ as normz"); - //非分组,求统计 - List groupFields = new ArrayList<>(); - if (CollUtil.isNotEmpty(dataSourceRequest.getAggregate()) && "average".equals(dataSourceRequest.getAggregate().get(0).getAggregate())){ - StringBuilder temp = new StringBuilder("select "); - for (DataSourceRequest.AggregateDescriptor item : dataSourceRequest.getAggregate()) - { - groupFields.add("avg(" + item.getField() + ") as "+item.getField()); - } - temp.append(StrUtil.join(",", groupFields)); - sql = temp.append(" from ( ").append(sql).append(" ) "); - } - if (CollUtil.isNotEmpty(dataSourceRequest.getAggregate()) && "average".equals(dataSourceRequest.getAggregate().get(0).getAggregate())){ - List> list = dynamicSQLMapper.pageAllList(page, sql.toString(), params); - dataSourceResult.setTotal(0); - for (Map objectMap : list) - { - for (DataSourceRequest.AggregateDescriptor item : dataSourceRequest.getAggregate()) - { - objectMap.put(item.getField(),objectMap.get(item.getField().toUpperCase())); - } - } - dataSourceResult.setData(list); - return dataSourceResult; - } - List> mapList =new ArrayList<>(); -// List> mapList = dynamicSQLMapper.pageAllList(page, sql.toString(), params); -// List msEngEqs = convertToMsEngEqList(mapList); - dataSourceResult.setData(mapList); - dataSourceResult.setTotal(ObjectUtil.isNotEmpty(page) ? page.getTotal() : (long) mapList.size()); - return dataSourceResult; - } - - @Override - public DataSourceResult getQgcDayKendoListCust(DataSourceRequest dataSourceRequest, Map filterResult, Page page, String groupBy) { - // 模拟数据,实际应该从数据库查询 - List dataList = new ArrayList<>(); - DataSourceResult result = new DataSourceResult(); - result.setData(dataList); - result.setTotal(0L); - return result; - } - - @Override - public Map getQgcQecStaticData(Object data, String type) { - List> newDataList = (List>)data; - - //生态达标率大于95%的电站数量(环保部) - Long qecCnt = newDataList.stream().filter(it->Objects.equals(it.get("QECINTERVAL"), QecIntervalEnum.QEC_STLL_1_DY95.getCode())).count(); - Long qecTcnt = newDataList.stream().filter(it->!Objects.equals(it.get("QECINTERVAL"), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode())).count(); - - //生态达标率大于95%的电站数量(水利部) - Long mwrCnt = newDataList.stream().filter(it->Objects.equals(it.get("MWRINTERVAL"),QecIntervalEnum.QEC_STLL_1_DY95.getCode())).count(); - Long mwrTcnt = newDataList.stream().filter(it->!Objects.equals(it.get("MWRINTERVAL"), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode())).count(); - - //生态达标率大于95%的电站数量(多年平均) - Long avqCnt = newDataList.stream().filter(it->Objects.equals(it.get("AVQINTERVAL"),QecIntervalEnum.QEC_STLL_1_DY95.getCode())).count(); - Long avqTcnt = newDataList.stream().filter(it->!Objects.equals(it.get("AVQINTERVAL"), QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode())).count(); - - //无生态流量要求的电站数据 - Long noCnt = newDataList.stream().filter(it-> - Objects.equals(it.get("QECINTERVAL"),QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode()) - && - Objects.equals(it.get("MWRINTERVAL"),QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode()) - && - Objects.equals(it.get("AVQINTERVAL"),QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode()) - ).count(); - - Map result = new HashMap<>(); - result.put("engCnt", newDataList.size()); - - List> qgcQecVos = new ArrayList<>(); - - Map qvo = new HashMap<>(); - qvo.put("qecTCnt", Math.toIntExact(qecTcnt)); - qvo.put("qecCnt", Math.toIntExact(qecCnt)); - qvo.put("code", QecIntervalEnum.QEC_STLL_1_DY95.getCode()); - qvo.put("desc", ShowEnum.Q.getDesc()+"_"+QecIntervalEnum.QEC_STLL_1_DY95.getDesc()); - qvo.put("type", ShowEnum.Q.getCode()); - qgcQecVos.add(qvo); - - Map mwrVo = new HashMap<>(); - mwrVo.put("qecTCnt", Math.toIntExact(mwrTcnt)); - mwrVo.put("qecCnt", Math.toIntExact(mwrCnt)); - mwrVo.put("code", QecIntervalEnum.QEC_STLL_1_DY95.getCode()); - mwrVo.put("desc", ShowEnum.M.getDesc()+"_"+QecIntervalEnum.QEC_STLL_1_DY95.getDesc()); - mwrVo.put("type", ShowEnum.M.getCode()); - qgcQecVos.add(mwrVo); - - Map avqVo = new HashMap<>(); - avqVo.put("qecTCnt", Math.toIntExact(avqTcnt)); - avqVo.put("qecCnt", Math.toIntExact(avqCnt)); - avqVo.put("code", QecIntervalEnum.QEC_STLL_1_DY95.getCode()); - avqVo.put("desc", ShowEnum.A.getDesc()+"_"+QecIntervalEnum.QEC_STLL_1_DY95.getDesc()); - avqVo.put("type", ShowEnum.A.getCode()); - qgcQecVos.add(avqVo); - - Map noVo = new HashMap<>(); - noVo.put("qecTCnt", Math.toIntExact(noCnt)); - noVo.put("qecCnt", Math.toIntExact(noCnt)); - noVo.put("code", QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode()); - noVo.put("desc", QecIntervalEnum.QEC_STLL_6_NOEQMN.getDesc()); - noVo.put("type", ShowEnum.N.getCode()); - qgcQecVos.add(noVo); - - result.put("list", qgcQecVos); - - return result; - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqServiceImpl.java deleted file mode 100644 index 0efe4056..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngEqServiceImpl.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.yfd.platform.qgc_eng.service.impl; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yfd.platform.common.*; -import com.yfd.platform.qgc_eng.domain.MsEngEq; -import com.yfd.platform.qgc_eng.mapper.EngEqMapper; -import com.yfd.platform.qgc_eng.service.EngEqService; -import com.yfd.platform.utils.KendoUtil; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; - -import java.util.*; - -/** - * 生态流量服务实现 - */ -@Service -public class EngEqServiceImpl extends ServiceImpl implements EngEqService { - @Resource - MicroservicDynamicSQLMapper microservicDynamicSQLMapper; - @Override - public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page) { - - DataSourceResult dataSourceResult = new DataSourceResult<>(); - StringBuilder sql = new StringBuilder(); - String kendoGroupCode = "default"; - String kendoGroupCode2 = "TM"; - if (filterResult.get(kendoGroupCode) !=null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode).getSelectSql())) { - sql.append(filterResult.get("default").getSelectSql()); - if (filterResult.get(kendoGroupCode2) !=null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode2).getSelectSql())) { - sql.append(StrUtil.replace(filterResult.get(kendoGroupCode2).getSelectSql(),"select",",")); - } - sql.append(",MET1.QEC beforeQec FROM "); - sql.append(" MS_ENG_T MET left join MS_ENG_T MET1 on MET1.stcd=MET.stcd and MET1.TYPE=met.type and add_months(MET1.TM,12)=met.tm inner join V_MS_STBPRP_T MSB on MSB.STCD=MET.STCD where MSB.STTP_CODE = 'ENG' and MSB.BLDSTT_CCODE = 2 ");//去掉大中型电站过滤条件 - } - - if (filterResult.get(kendoGroupCode) !=null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode).getGroupSql())) { - sql.append(" and ").append(filterResult.get(kendoGroupCode).getGroupSql()); - } - if (filterResult.get(kendoGroupCode2) != null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode2).getGroupSql())) { - sql.append(" and ").append(filterResult.get(kendoGroupCode2).getGroupSql()); - } - if (filterResult.get(kendoGroupCode2) !=null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode2).getOrderBySql())) { - sql.append(" ").append(filterResult.get(kendoGroupCode2).getOrderBySql()); - } - //组装分组条件 - String groupBy = KendoUtil.getGroupBy(dataSourceRequest); - GroupingInfo[] group = dataSourceRequest.toDevRequest().getGroup(); - if (StrUtil.isNotBlank(groupBy)) { - StringBuilder temp = new StringBuilder("select "); - List groupFields = new ArrayList<>(); - for (GroupingInfo item : group) { - groupFields.add(item.getSelector()); - } - temp.append(StrUtil.join(",",groupFields)); - for (GroupingInfo item : group) { - groupFields.add(item.getSelector()); - temp.append(",").append("count(*) as count_").append(item.getSelector()); - } - sql = temp.append(" from ( ").append(sql).append(" ) ").append(groupBy); - } - - if (filterResult.get(kendoGroupCode) !=null && StrUtil.isNotBlank(filterResult.get(kendoGroupCode).getOrderBySql())) { - sql.append(" ").append(filterResult.get(kendoGroupCode).getOrderBySql()); - } - - //组装map参数 - Map map = new HashMap<>(); - for (String key : filterResult.keySet()) { - map.putAll(filterResult.get(key).getParamMap()); - } - - - if (StrUtil.isNotBlank(groupBy)) { - List> list = microservicDynamicSQLMapper.pageAllList(page, sql.toString(), map); - //是否扁平化分组 - if (null != dataSourceRequest.getGroupResultFlat() && dataSourceRequest.getGroupResultFlat()) { - dataSourceResult.setData((new GroupHelper()).faltGroup(list, Arrays.asList(group))); - } else { - dataSourceResult.setData((new GroupHelper()).group(list, Arrays.asList(group))); - } - dataSourceResult.setTotal(0); - return dataSourceResult; - } - List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), map,MsEngEq.class); - dataSourceResult.setData(list); - dataSourceResult.setTotal(ObjectUtil.isNotEmpty(page) ? page.getTotal() : (long) list.size()); - return dataSourceResult; - } - - @Override - public void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult) { - // 处理字典匹配,实际应该根据业务需求实现 - } - - @Override - public String processGroupConditionSql(DataSourceRequest dataSourceRequest, Map filterResult) { - // 模拟SQL条件,实际应该根据业务需求实现 - return "1=1"; - } - - @Override - public DataSourceResult lastEngDataSite(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult getDefaultStcd(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult getSfdbInfo(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult qecSfdbCountByStcd(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult qecRateCount(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } - - @Override - public DataSourceResult qecSfdbCount(DataSourceRequest dataSourceRequest) { - // 模拟数据,实际应该从数据库查询 - DataSourceResult result = new DataSourceResult(); - result.setData(new ArrayList<>()); - result.setTotal(0L); - return result; - } -} diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngSpecialServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngSpecialServiceImpl.java deleted file mode 100644 index 4ccb9e8f..00000000 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/service/impl/EngSpecialServiceImpl.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.yfd.platform.qgc_eng.service.impl; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.yfd.platform.common.DataSourceRequest; -import com.yfd.platform.common.DataSourceResult; -import com.yfd.platform.qgc_eng.entity.EqSpecial; -import com.yfd.platform.qgc_eng.service.EngSpecialService; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * 电站专题-环保设施运行情况服务实现 - */ -@Service -public class EngSpecialServiceImpl implements EngSpecialService { - - @Override - public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map filterResult, Page page) { - // 模拟数据,实际应该从数据库查询 - List dataList = new ArrayList<>(); - // 模拟添加一些数据 - EqSpecial special1 = new EqSpecial(); - special1.setId("1"); - special1.setStcd("ST001"); - special1.setStnm("电站1"); - special1.setEqType("生态流量监测设施"); - special1.setEqName("流量监测仪"); - special1.setStatus("正常运行"); - special1.setCheckTime("2023-04-14"); - special1.setChecker("张三"); - special1.setRemark("无"); - dataList.add(special1); - - EqSpecial special2 = new EqSpecial(); - special2.setId("2"); - special2.setStcd("ST002"); - special2.setStnm("电站2"); - special2.setEqType("水质监测设施"); - special2.setEqName("水质分析仪"); - special2.setStatus("正常运行"); - special2.setCheckTime("2023-04-15"); - special2.setChecker("李四"); - special2.setRemark("无"); - dataList.add(special2); - - DataSourceResult result = new DataSourceResult<>(); - result.setData(dataList); - result.setTotal(dataList.size()); - return result; - } - - @Override - public void processKendoGetListLoadResult(DataSourceRequest dataSourceRequest, DataSourceResult dataSourceResult) { - // 处理字典匹配,实际应该根据业务需求实现 - } -} \ No newline at end of file