From 4caa7de80116b7b5b4bf3adbe98d9aace72079bd Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期日, 27 四月 2025 15:03:45 +0800 Subject: [PATCH] 发电机组功率历史文档 --- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java | 157 ++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 128 insertions(+), 29 deletions(-) diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java index 7af6dd3..52defdf 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java @@ -64,11 +64,17 @@ @Autowired private PowerAdjustedFactorService powerAdjustedFactorService; - @Resource + @Autowired private DataPointApi dataPointApi; - @Resource + @Autowired private McsApi mcsApi; + + @Autowired + private PowerCapacitorHisService powerCapacitorHisService; + + @Autowired + private PowerCapacitorDetService powerCapacitorDetService; @GetMapping("/net-factor/list") @Operation(summary = "功率因数-电网拓扑") @@ -158,10 +164,10 @@ @GetMapping("/net-factor-dropdown/list") @Operation(summary = "功率因数-电网拓扑下拉列表") - public CommonResult<List<PowerNetFactorDropdownDTO>> getPowerNetFactorDropdownList(@RequestParam String nodeName) { - List<PowerNetFactorEntity> list = powerNetFactorService.listDropdown(nodeName); - List<PowerNetFactorDropdownDTO> result = ConvertUtils.sourceToTarget(list, PowerNetFactorDropdownDTO.class); - return success(result); + public CommonResult<List<PowerNetFactorDropdownDTO>> getPowerNetFactorDropdownList(@RequestParam String nodeCode) { + log.info("nodeCode=" + nodeCode); + List<PowerNetFactorEntity> list = powerNetFactorService.listDropdown(nodeCode); + return success(ConvertUtils.sourceToTarget(list, PowerNetFactorDropdownDTO.class)); } /** @@ -245,11 +251,121 @@ return success(result); } + @PostMapping("/gen-status/history") + @Operation(summary = "功率因数-发电机组功率历史") + public CommonResult<PowerHistoryDTO> getPowerGenStatusHistory(@RequestBody PowerGenStatusHisReqDTO dto) { + log.info("请求参数: {}", JSONObject.toJSONString(dto)); + + // 参数校验 + if (StringUtils.isBlank(dto.getId())) { + return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST, "id不能为空"); + } + if (StringUtils.isBlank(dto.getQueryType())) { + return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST, "queryType不能为空"); + } + log.info("id={}", dto.getId()); + PowerGenStatusEntity powerGenStatus = powerGenStatusDaoService.getById(dto.getId()); + if (powerGenStatus == null) { + log.info("未找到code对应的数据: {}", dto.getId()); + return success(new PowerHistoryDTO()); + } + + String queryType = dto.getQueryType().toUpperCase(); + log.info("queryType={}", queryType); + String pointNo; + switch (queryType.toUpperCase()) { + case "P": + pointNo = powerGenStatus.getCurP(); + break; + case "Q": + pointNo = powerGenStatus.getCurQ(); + break; + case "COS": + pointNo = powerGenStatus.getCurCos(); + break; + default: + throw new IllegalArgumentException("不支持的queryType: " + queryType); + } + log.info("开始查询,pointNo={}", pointNo); + + // 默认查最近24小时 + Date end = Optional.ofNullable(dto.getEndTime()).orElseGet(() -> { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.MILLISECOND, 0); + cal.set(Calendar.SECOND, 0); + return cal.getTime(); + }); + + Date start = Optional.ofNullable(dto.getStartTime()).orElseGet(() -> { + Calendar cal = Calendar.getInstance(); + cal.setTime(end); + cal.add(Calendar.MINUTE, -1440); // 24小时前 + return cal.getTime(); + }); + + // 查询历史数据 + ApiPointValueQueryDTO query = new ApiPointValueQueryDTO(); + query.setPointNo(pointNo); + query.setStart(start); + query.setEnd(end); + + log.info("开始查询发电机组功率历史数据,测点: {}", pointNo); + List<ApiPointValueDTO> chartData = dataPointApi.queryPointHistoryValue(query); + + // 构建返回结果 + PowerHistoryDTO result = new PowerHistoryDTO(); + result.setCategories(DateUtils.getTimeScale(start, end, 60)); + result.setDataList(chartData.stream() + .map(pv -> new Object[]{ + DateUtils.format(pv.getT(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND), + pv.getV() + }) + .collect(Collectors.toList())); + + return success(result); + } + @GetMapping("/capacitor-status/list") - @Operation(summary = "功率因数-电容器投运状态") + @Operation(summary = "功率因数-电容器投退状态") public CommonResult<List<PowerCapacitorStatusDTO>> getPowerCapacitorStatusList(@RequestParam Map<String, Object> params) { List<PowerCapacitorStatusEntity> list = powerCapacitorStatusService.list(params); return success(ConvertUtils.sourceToTarget(list, PowerCapacitorStatusDTO.class)); + } + + @GetMapping("/capacitor-det/list") + @Operation(summary = "功率因数-电容器投退指示灯") + public CommonResult<List<PowerCapacitorDetDTO>> getPowerCapacitorDetList(@RequestParam Map<String, Object> params) { + List<PowerCapacitorDetEntity> list = powerCapacitorDetService.list(params); + log.info("list.size=" + list.size()); + List<String> points = list.stream().map(item -> { + return item.getPointNo(); + }).collect(Collectors.toList()); + Map<String, Object> pointsRealValue = new HashMap<>(); + if (!CollectionUtils.isEmpty(points)) { + pointsRealValue = dataPointApi.queryPointsRealValue(points); + } + + List<PowerCapacitorDetDTO> result = new ArrayList<>(); + for (PowerCapacitorDetEntity entity : list) { + PowerCapacitorDetDTO dto = ConvertUtils.sourceToTarget(entity, PowerCapacitorDetDTO.class); + result.add(dto); + dto.setStatus(0); + if (!pointsRealValue.containsKey(entity.getPointNo()) || pointsRealValue.get(entity.getPointNo()) == null) { + continue; + } + BigDecimal val = new BigDecimal(pointsRealValue.get(entity.getPointNo()).toString()); + if (val.compareTo(BigDecimal.ZERO) >= 0.1) { + dto.setStatus(1); + } + } + return success(result); + } + + @GetMapping("/capacitor-his/list") + @Operation(summary = "功率因数-电容器投退历史") + public CommonResult<List<PowerCapacitorHisDTO>> getPowerCapacitorHisList(@RequestParam Map<String, Object> params) { + List<PowerCapacitorHisEntity> list = powerCapacitorHisService.list(params); + return success(ConvertUtils.sourceToTarget(list, PowerCapacitorHisDTO.class)); } @GetMapping("/control-main/list") @@ -405,7 +521,7 @@ calendar0.set(Calendar.SECOND, 0); Date end = dto.getEndTime() == null ? calendar0.getTime() : dto.getEndTime(); calendar0.add(Calendar.MINUTE, -1440); - Date start = dto.getStartTime() == null ? calendar0.getTime() : dto.getStartTime(); + Date start = dto.getStartTime() == null ? calendar0.getTime() : dto.getStartTime(); apiPointValueQueryDTO.setEnd(end); apiPointValueQueryDTO.setStart(start); List<ApiPointValueDTO> chartData = dataPointApi.queryPointHistoryValue(apiPointValueQueryDTO); @@ -433,31 +549,11 @@ List<ApiPointValueDTO> monthChartData = dataPointApi.queryPointHistoryValue(apiPointValueQueryDTO); List<Double> monthValues = new ArrayList<>(); if (CollectionUtils.isEmpty(monthChartData)) { - monthValues = monthChartData.stream().map(item -> item.getV()).collect(Collectors.toList()); + monthValues = monthChartData.stream().map(item -> item.getV()).collect(Collectors.toList()); result.setMax(monthValues.stream().max(Double::compareTo).get()); result.setMin(monthValues.stream().min(Double::compareTo).get()); } return success(result); - } - - private double getMin(List<List<Object>> dataList) { - double result = Double.parseDouble(dataList.get(0).get(1).toString()); - for (int i = 0; i < dataList.size() - 1; i++) { - if (result > Double.parseDouble(dataList.get(i).get(1).toString())) { - result = Double.parseDouble(dataList.get(i).get(1).toString()); - } - } - return result; - } - - private double getMax(List<List<Object>> dataList) { - double result = 0; - for (int i = 0; i < dataList.size() - 1; i++) { - if (result < Double.parseDouble(dataList.get(i).get(1).toString())) { - result = Double.parseDouble(dataList.get(i).get(1).toString()); - } - } - return result; } @GetMapping("/adjust-factor") @@ -467,6 +563,7 @@ List<PowerAdjustedFactorDTO> dtoList = ConvertUtils.sourceToTarget(list, PowerAdjustedFactorDTO.class); Map<String, Double> result = new HashMap<>(); if (CollectionUtils.isEmpty(list)) { + log.info("PowerAdjustedFactor List is empty"); return success(result); } List<String> points = new ArrayList<>(); @@ -479,6 +576,7 @@ if (!CollectionUtils.isEmpty(points)) { dataMap = dataPointApi.queryPointsRealValue(points); } + for (PowerAdjustedFactorDTO powerAdjustedFactorDTO : dtoList) { Double value = dataMap.get(powerAdjustedFactorDTO.getPointNo()) == null ? 0 : Double.parseDouble(dataMap.get(powerAdjustedFactorDTO.getPointNo()).toString()); result.put(powerAdjustedFactorDTO.getName(), value); @@ -554,4 +652,5 @@ return success(result); } + } \ No newline at end of file -- Gitblit v1.9.3