ansteel-biz/db/mysql.sql
@@ -296,6 +296,7 @@ `status_id` varchar(36) NULL DEFAULT NULL COMMENT '投运状态父ID', `type` varchar(50) NULL DEFAULT NULL COMMENT '类型', `name` varchar(50) NULL DEFAULT NULL COMMENT '电容器名称', `point_no` varchar(50) NULL DEFAULT NULL COMMENT '下属测点编码', `remark` varchar(50) NULL DEFAULT NULL COMMENT '备注', `sort` int NULL DEFAULT NULL COMMENT '排序', PRIMARY KEY (`id`) USING BTREE @@ -720,4 +721,28 @@ `create_date` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, KEY `idx_rel_id` (`rel_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='焦化工序概况指标数据结果'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='焦化工序概况指标数据结果'; -- ---------------------------- -- 电力下拉关系表 -- ---------------------------- CREATE TABLE `t_power_net_dropdown` ( `id` varchar(36) NOT NULL, `p_code` varchar(50) DEFAULT NULL COMMENT '父编码', `group_name` varchar(50) NULL DEFAULT NULL COMMENT '分组名称', `node_code` varchar(50) DEFAULT NULL COMMENT '编码', `node_name` varchar(50) DEFAULT NULL COMMENT '名称', `cur_p` varchar(50) NULL DEFAULT NULL COMMENT '当前有功', `cur_q` varchar(50) NULL DEFAULT NULL COMMENT '当前无功', `cur_cos` varchar(50) NULL DEFAULT NULL COMMENT '当前功率因数', `ext1` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拓展字段1', `ext2` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拓展字段2', `ext3` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拓展字段3', `ext4` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拓展字段4', `ext5` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拓展字段5', `sort` int DEFAULT NULL COMMENT '排序', PRIMARY KEY (`id`), key uk_p_code (p_code), UNIQUE key uk_node_code (node_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='电力下拉关系表'; ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java
@@ -64,8 +64,8 @@ Map<String, String> dynamicSettings = new HashMap<>(); Integer[] xiufengOrder = { reqVO.getBfg(), reqVO.getStart(), reqVO.getNow() == null ? Integer.parseInt(nowH) : reqVO.getNow(), reqVO.getStart(), reqVO.getMins()}; dynamicSettings.put("xiufeng_order", JSONArray.toJSONString(xiufengOrder)); dynamicSettings.put("jiaohua_BFG_down", reqVO.getLimit().toString()); @@ -89,12 +89,14 @@ } Map<String, Object> data = mdkScheduleRespDTO.getResult(); // String fakeData = "{\"houbanAdvice\":[1000.0,150.0,16.97],\"2#LFAdvice\":[1000.0,150.0,11.8],\"1#2#zhiyangAdvice\":[1000.0,150.0,3.0],\"shaojieAdvice\":[1000.0,150.0,8.25],\"CCPPAdvice\":[1000.0,150.0,47.3],\"demand\":[34.4,0.0,3.0,0.0,0.0],\"rezhaAdvice\":[1000.0,150.0,45.86],\"best_total_power\":129.27,\"bfg_gap\":377924.37,\"zhongbanAdvice\":[1000.0,150.0,4.12],\"3#zhiyangAdvice\":[1000.0,150.0,25.3],\"cog_gap\":[800.0,59113.58],\"baihuiAdvice\":[1000.0,150.0,1.0],\"1#LFAdvice\":[1000.0,150.0,15.98]}"; // Map<String, Object> data = JSONObject.parseObject(fakeData, Map.class); switch (TransferTypeEnum.getEumByCode(reqVO.getType())) { case XF: // 高炉休风 result.setBestTotalPower(DecimalUtil.toBigDecimal(data.get("best_total_power")));//负荷调整总量 result.setBfgGap(DecimalUtil.toBigDecimal(data.get("bfg_gap")));//煤气送管网缺口 result.setDemand(DecimalUtil.toBigDecimal(data.get("demand")));//需量缺口 result.setDemand(data.get("demand"));//需量缺口 result.setCogGapTime(data.get("cog_gap") == null ? 0 : DecimalUtil.toBigDecimal(data.get("cog_gap"), 0).intValue()); //焦化减高炉煤气-时间 result.setCogGapAmount(data.get("cog_gap") == null ? 0 : DecimalUtil.toBigDecimal(data.get("cog_gap"), 1).intValue());//焦化减高炉煤气-数量 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -7,6 +7,7 @@ import com.iailab.framework.common.util.date.DateUtils; import com.iailab.framework.common.util.object.ConvertUtils; import com.iailab.module.ansteel.api.dto.*; import com.iailab.module.ansteel.common.utils.DecimalUtil; import com.iailab.module.ansteel.power.entity.*; import com.iailab.module.ansteel.power.service.*; import com.iailab.module.data.api.point.DataPointApi; @@ -22,10 +23,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -64,11 +62,20 @@ @Autowired private PowerAdjustedFactorService powerAdjustedFactorService; @Resource @Autowired private DataPointApi dataPointApi; @Resource @Autowired private McsApi mcsApi; @Autowired private PowerCapacitorHisService powerCapacitorHisService; @Autowired private PowerCapacitorDetService powerCapacitorDetService; @Autowired private PowerNetDropdownService powerNetDropdownService; @GetMapping("/net-factor/list") @Operation(summary = "功率因数-电网拓扑") @@ -158,10 +165,39 @@ @GetMapping("/net-factor-dropdown/list") @Operation(summary = "功率因数-电网拓扑下拉列表") public CommonResult<List<PowerNetFactorDropdownDTO>> getPowerNetFactorDropdownList(@RequestParam String nodeCode) { public CommonResult<List<PowerNetDropdownDTO>> getPowerNetFactorDropdownList(@RequestParam String nodeCode) { log.info("nodeCode=" + nodeCode); List<PowerNetFactorEntity> list = powerNetFactorService.listDropdown(nodeCode); return success(ConvertUtils.sourceToTarget(list, PowerNetFactorDropdownDTO.class)); List<PowerNetDropdownDTO> result = new ArrayList<>(); PowerNetFactorEntity entity = powerNetFactorService.getByNodeCode(nodeCode); if (entity == null) { return success(result); } List<PowerNetDropdownEntity> list = new ArrayList<>(); Map<String, Object> params = new HashMap<>(); if ("望铁关口".equals(entity.getGroupName())) { params.put("groupName", entity.getGroupName()); params.put("neNodeName", entity.getNodeName()); } else { params.put("groupName", entity.getNodeName()); } list = powerNetDropdownService.list(params); List<String> points = list.stream().map(item -> { return item.getCurCos(); }).collect(Collectors.toList()); Map<String, Object> pointsRealValue = new HashMap<>(); if (!CollectionUtils.isEmpty(points)) { pointsRealValue = dataPointApi.queryPointsRealValue(points); } for (PowerNetDropdownEntity netDropdown : list) { PowerNetDropdownDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerNetDropdownDTO.class); BigDecimal curCos = BigDecimal.ZERO; if (pointsRealValue.get(netDropdown.getCurCos()) != null) { curCos = new BigDecimal(pointsRealValue.get(netDropdown.getCurCos()).toString()); } dto.setCurCos(curCos); result.add(dto); } return success(result); } /** @@ -245,11 +281,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") @@ -313,6 +459,13 @@ if (CollectionUtils.isEmpty(result)) { return success(result); } Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); for (PowerDemandDTO dto : result) { List<String> points = new ArrayList<>(); if (StringUtils.isNotBlank(dto.getCurDemand())) { @@ -321,11 +474,8 @@ if (StringUtils.isNotBlank(dto.getActivePower())) { points.add(dto.getActivePower()); } if (!CollectionUtils.isEmpty(points)) { Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points); if (pointsRealValue.get(dto.getCurDemand()) != null) { dto.setCurDemand(pointsRealValue.get(dto.getCurDemand()).toString()); } @@ -335,31 +485,164 @@ } if (!StringUtils.isEmpty(dto.getMaxDemand())) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date start = calendar.getTime(); ApiPointValueQueryDTO apiPointValueQueryDTO = new ApiPointValueQueryDTO(); apiPointValueQueryDTO.setStart(start); apiPointValueQueryDTO.setEnd(new Date()); apiPointValueQueryDTO.setPointNo(dto.getMaxDemand()); List<ApiPointValueDTO> monthValues = dataPointApi.queryPointHistoryValue(apiPointValueQueryDTO); double max = 0; for (int i = 0; i < monthValues.size() - 1; i++) { if (max < monthValues.get(i).getV()) { max = monthValues.get(i).getV(); } Map<String, Object> maxValue = dataPointApi.queryPointMaxValue(apiPointValueQueryDTO); if (maxValue != null) { dto.setMaxDemand(maxValue.get(dto.getMaxDemand()) == null ? "" : maxValue.get(dto.getMaxDemand()).toString()); } dto.setMaxDemand(String.valueOf(max)); } } return success(result); } @GetMapping("/demand-dropdown/list") @Operation(summary = "负荷移植-功率因数下拉列表") public CommonResult<List<PowerNetDropdownDTO>> getDemandDropdownList(@RequestParam String code) { if (StringUtils.isBlank(code)) { log.info("code isBlank"); return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST); } log.info("code=" + code); List<PowerNetDropdownDTO> result = new ArrayList<>(); PowerDemandEntity entity = powerDemandService.getByCode(code); if (entity == null) { log.info("PowerDemandEntity is null"); return success(result); } Map<String, Object> params0 = new HashMap<>(); params0.put("groupName", entity.getName()); List<PowerNetDropdownEntity> list = powerNetDropdownService.list(params0); List<String> points = list.stream().map(item -> { return item.getCurCos(); }).collect(Collectors.toList()); Map<String, Object> pointsRealValue = new HashMap<>(); if (!CollectionUtils.isEmpty(points)) { pointsRealValue = dataPointApi.queryPointsRealValue(points); } for (PowerNetDropdownEntity netDropdown : list) { PowerNetDropdownDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerNetDropdownDTO.class); BigDecimal curCos = BigDecimal.ZERO; if (pointsRealValue.get(netDropdown.getCurCos()) != null) { curCos = new BigDecimal(pointsRealValue.get(netDropdown.getCurCos()).toString()); } dto.setCurCos(curCos); result.add(dto); } return success(result); } @PostMapping("/demand-query/list") @Operation(summary = "负荷移植-功率因数查询") public CommonResult<List<PowerNetDropdownDTO>> getDemandDropdownList(@RequestBody PowerDemandQueryDTO queryDto) { List<PowerNetDropdownDTO> result = new ArrayList<>(); if (StringUtils.isBlank(queryDto.getCode())) { log.info("code isBlank"); } log.info("code=" + queryDto.getCode()); if (StringUtils.isBlank(queryDto.getNodeCode())) { log.info("NodeCode isBlank"); } PowerDemandEntity entity = powerDemandService.getByCode(queryDto.getCode()); if (entity == null) { log.info("PowerDemandEntity is null"); return success(result); } Map<String, Object> params0 = new HashMap<>(); params0.put("groupName", entity.getName()); List<PowerNetDropdownEntity> list = powerNetDropdownService.list(params0); List<String> points = list.stream().map(item -> { return item.getCurCos(); }).collect(Collectors.toList()); if (queryDto.getCurCos() == null) { log.info("查询当前值"); Map<String, Object> pointsRealValue = new HashMap<>(); if (!CollectionUtils.isEmpty(points)) { pointsRealValue = dataPointApi.queryPointsRealValue(points); } for (PowerNetDropdownEntity netDropdown : list) { PowerNetDropdownDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerNetDropdownDTO.class); BigDecimal curCos = BigDecimal.ZERO; if (pointsRealValue.get(netDropdown.getCurCos()) != null) { curCos = new BigDecimal(pointsRealValue.get(netDropdown.getCurCos()).toString()); } dto.setCurCos(curCos); result.add(dto); } } else { log.info("查询历史值"); String nodeCode = queryDto.getNodeCode(); if (StringUtils.isBlank(nodeCode)) { log.info("nodeCode isBlank"); return success(result); } PowerNetDropdownEntity powerNetDropdownEntity = powerNetDropdownService.getByNodeCode(nodeCode); if (powerNetDropdownEntity == null) { log.info("PowerNetDropdownEntity is null"); return success(result); } ApiPointsValueQueryDTO valueQueryDTO = new ApiPointsValueQueryDTO(); valueQueryDTO.setPointNos(points); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); Date startTime = queryDto.getStartTime(); Date endTime = queryDto.getEndTime(); if (endTime == null) { endTime = calendar.getTime(); } if (startTime == null) { calendar.add(Calendar.DAY_OF_YEAR, -1); startTime = calendar.getTime(); } valueQueryDTO.setStart(startTime); valueQueryDTO.setEnd(endTime); Map<String, List<Map<String, Object>>> pointsHisValues = dataPointApi.queryPointsHistoryValue(valueQueryDTO); if (CollectionUtils.isEmpty(pointsHisValues)) { log.info("pointsHisValues is null"); return success(result); } ApiPointValueQueryDTO pointValueQueryDTO = new ApiPointValueQueryDTO(); pointValueQueryDTO.setStart(startTime); pointValueQueryDTO.setEnd(endTime); pointValueQueryDTO.setPointNo(powerNetDropdownEntity.getCurCos()); List<ApiPointValueDTO> hisValue = dataPointApi.queryPointHistoryValue(pointValueQueryDTO); if (CollectionUtils.isEmpty(hisValue)) { log.info("hisValue is null"); } ApiPointValueDTO curValue = null; Collections.reverse(hisValue); for (ApiPointValueDTO valueDTO : hisValue) { curValue = valueDTO; if ((queryDto.getCurCos().doubleValue() - valueDTO.getV()) <= 0.0001) { break; } } if (curValue == null) { log.info("curValue is null"); return success(result); } log.info("curValue=" + curValue); for (PowerNetDropdownEntity netDropdown : list) { PowerNetDropdownDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerNetDropdownDTO.class); if (CollectionUtils.isEmpty(pointsHisValues.get(netDropdown.getCurCos()))) { continue; } Map<String, BigDecimal> pointValueMap = new HashMap<>(); pointsHisValues.get(netDropdown.getCurCos()).forEach(item -> { pointValueMap.put(item.get("time").toString(), DecimalUtil.toBigDecimal(item.get("value"))); }); dto.setCurCos(pointValueMap.get(DateUtils.format(curValue.getT(),DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND))); result.add(dto); } } return success(result); } @@ -367,6 +650,7 @@ @Operation(summary = "功率因数-根据nodeName获取最近1440min历史数据,月最大,最小值") public CommonResult<PowerHistoryDTO> getPowerHistoryData(@RequestBody PowerNetFactorHisReqDTO dto) { log.info("PowerNetFactorHisReqDTO=" + JSONObject.toJSONString(dto)); PowerHistoryDTO result = new PowerHistoryDTO(); String nodeCode = dto.getNodeCode(); if (StringUtils.isBlank(nodeCode)) { return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST); @@ -375,25 +659,30 @@ if (StringUtils.isBlank(queryType)) { return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST); } PowerNetFactorEntity powerNetFactor = powerNetFactorService.getByNodeCode(nodeCode); PowerHistoryDTO result = new PowerHistoryDTO(); if (powerNetFactor == null) { PowerNetFactorQuery powerNetFactorQuery = null; PowerNetFactorEntity powerNetFactorEntity = powerNetFactorService.getByNodeCode(nodeCode); PowerNetDropdownEntity powerNetDropdownEntity = powerNetDropdownService.getByNodeCode(nodeCode); if (powerNetFactorEntity != null) { powerNetFactorQuery = ConvertUtils.sourceToTarget(powerNetFactorEntity, PowerNetFactorQuery.class); } else if (powerNetDropdownEntity != null) { powerNetFactorQuery = ConvertUtils.sourceToTarget(powerNetDropdownEntity, PowerNetFactorQuery.class); } if (powerNetFactorQuery == null) { log.info("powerNetFactor is null"); return success(result); } log.info("开始查询,"); ApiPointValueQueryDTO apiPointValueQueryDTO = new ApiPointValueQueryDTO(); String pointNo = ""; switch (queryType.toUpperCase()) { case "P": pointNo = powerNetFactor.getCurP(); pointNo = powerNetFactorQuery.getCurP(); break; case "Q": pointNo = powerNetFactor.getCurQ(); pointNo = powerNetFactorQuery.getCurQ(); break; case "COS": pointNo = powerNetFactor.getCurCos(); pointNo = powerNetFactorQuery.getCurCos(); break; default: break; @@ -405,7 +694,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 +722,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") @@ -556,75 +825,5 @@ return success(result); } @PostMapping("/gen/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不能为空"); } PowerGenStatusEntity powerGenStatus = powerGenStatusDaoService.getById(dto.getId()); if (powerGenStatus == null) { log.info("未找到code对应的数据: {}", dto.getId()); return success(new PowerHistoryDTO()); } String queryType = dto.getQueryType().toUpperCase(); String pointNo; switch (queryType.toUpperCase()) { case "D": pointNo = powerGenStatus.getCurP(); break; case "P": pointNo = powerGenStatus.getCurQ(); break; case "COS": pointNo = powerGenStatus.getCurCOS(); break; default: throw new IllegalArgumentException("不支持的queryType: " + queryType); } // 默认查最近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); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/CokingProcessMainDTO.java
文件已删除 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerCapacitorDetDTO.java
对比新文件 @@ -0,0 +1,28 @@ package com.iailab.module.ansteel.api.dto; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; /** * @author PanZhibao * @Description * @createTime 2025年04月27日 */ @Data public class PowerCapacitorDetDTO implements Serializable { private static final long serialVersionUID = 1L; @Schema(description = "id") private String id; @Schema(description = "类型") private String type; @Schema(description = "电容器名称") private String name; @Schema(description = "投退指示灯") private Integer status; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerCapacitorHisDTO.java
对比新文件 @@ -0,0 +1,35 @@ package com.iailab.module.ansteel.api.dto; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; /** * @author PanZhibao * @Description * @createTime 2025年04月27日 */ @Data public class PowerCapacitorHisDTO implements Serializable { private static final long serialVersionUID = 1L; @Schema(description = "id") private String id; @Schema(description = "电容器名称") private String name; @Schema(description = "状态") private String status; @Schema(description = "内容") private String content; @Schema(description = "备注") private String remark; @Schema(description = "i创建时间d") private String createDate; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandQueryDTO.java
对比新文件 @@ -0,0 +1,39 @@ package com.iailab.module.ansteel.api.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; /** * @author PanZhibao * @Description * @createTime 2025年04月28日 */ @Data public class PowerDemandQueryDTO implements Serializable { private static final long serialVersionUID = 1L; @Schema(description = "编码") private String code; @Schema(description = "节点编码") private String nodeCode; @Schema(description = "节点名称") private String nodeName; @Schema(description = "当前功率因数") private BigDecimal curCos; @Schema(description = "开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startTime; @Schema(description = "结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetDropdownDTO.java
文件名从 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDropdownDTO.java 修改 @@ -5,6 +5,7 @@ import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; /** * 电力功率因数电网拓扑下拉列表 @@ -13,7 +14,7 @@ * @since 1.0.0 2025-04-11 */ @Data public class PowerNetFactorDropdownDTO implements Serializable { public class PowerNetDropdownDTO implements Serializable { private static final long serialVersionUID = 1L; @Schema(description = "节点编码") @@ -22,4 +23,10 @@ @Schema(description = "节点名称") private String nodeName; @Schema(description = "当前功率因数") private BigDecimal curCos; @Schema(description = "数据时间") private Date dataTime; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorQuery.java
对比新文件 @@ -0,0 +1,28 @@ package com.iailab.module.ansteel.api.dto; import lombok.Data; import java.io.Serializable; /** * @author PanZhibao * @Description * @createTime 2025年04月28日 */ @Data public class PowerNetFactorQuery implements Serializable { private static final long serialVersionUID = 1L; /** * 当前有功 */ private String curP; /** * 当前无功 */ private String curQ; /** * 当前功率因数 */ private String curCos; } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java
@@ -25,7 +25,7 @@ private BigDecimal bfgGap; @Schema(description = "需量缺口") private BigDecimal demand; private Object demand; @Schema(description = "焦化减高炉煤气-时间") private Integer cogGapTime; ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingOverviewIndDTO.java
@@ -6,6 +6,7 @@ import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; /** @@ -47,7 +48,7 @@ /** * 值 */ private String indValue; private BigDecimal indValue; /** * 单位 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingProcessMainDTO.java
对比新文件 @@ -0,0 +1,40 @@ package com.iailab.module.ansteel.coking.dto; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; /** * @author PanZhibao * @Description * @createTime 2025年04月11日 */ @Data public class CokingProcessMainDTO implements Serializable { private static final long serialVersionUID = 1L; private String category; private String clock; private String infoType; private String indCode; private String indName; // 实际值 private BigDecimal realValue; // 基准值 private BigDecimal standValue; // 理论值 private BigDecimal theoryValue; // 历史平均 private BigDecimal avgValue; // 历史最优 private BigDecimal baseValue; // 月累计 private BigDecimal monthValue; private Integer sort; } ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProcessMainEntity.java
@@ -6,6 +6,7 @@ import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; /** * @author PanZhibao @@ -26,17 +27,21 @@ private String infoType; private String indCode; private String indName; private String avgValue; private String theoryValue; private String actualValue; private String standValue; private String realValue; // 实际值 private BigDecimal realValue; // 基准值 private BigDecimal standValue; // 理论值 private BigDecimal theoryValue; // 历史平均 private BigDecimal avgValue; // 历史最优 private BigDecimal baseValue; // 月累计 private BigDecimal monthValue; private Integer sort; } ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java
@@ -15,4 +15,6 @@ List<CokingAnalyIndEntity> list(Map<String, Object> params); void save(List<CokingAnalyIndEntity> entityList); void delete(String analyType, String analyDate, String analyClass); } ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingProcessMainService.java
@@ -14,7 +14,9 @@ List<CokingProcessMainEntity> list(Map<String, Object> params); void save(CokingProcessMainEntity cokingProcessMainEntity); List<CokingProcessMainEntity> historyList(String start, String end, String category, String indCode); void save(List<CokingProcessMainEntity> list); void deleteByClock(String clock); } ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceChartService.java
@@ -16,6 +16,7 @@ List<CokingTraceChartEntity> list(Map<String, Object> params); void save(CokingTraceChartEntity cokingTraceChartEntity); void insert(List<CokingTraceChartEntity> list); void save(String relId, String clock, String indType, Date startDate, Date endDate); ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java
@@ -39,4 +39,15 @@ public void save(List<CokingAnalyIndEntity> entityList) { cokingAnalyIndDao.insert(entityList); } @Override public void delete(String analyType, String analyDate, String analyClass) { QueryWrapper<CokingAnalyIndEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("analy_type", analyType) .eq("analy_date", analyDate) .eq("analy_class", analyClass); cokingAnalyIndDao.delete(queryWrapper); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingProcessMainServiceImpl.java
@@ -30,6 +30,7 @@ @Override public List<CokingProcessMainEntity> list(Map<String, Object> params) { String category = (String) params.get("category"); String infoType = (String) params.get("infoType"); String clock = (String) params.get("clock"); if (StringUtils.isBlank(category)) { return new ArrayList<>(); @@ -41,14 +42,25 @@ } QueryWrapper<CokingProcessMainEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("category", category) .eq("info_type", infoType) .eq("clock", clock) .orderByAsc("sort"); return cokingProcessMainDao.selectList(queryWrapper); } @Override public void save(CokingProcessMainEntity cokingProcessMainEntity) { cokingProcessMainDao.insert(cokingProcessMainEntity); public List<CokingProcessMainEntity> historyList(String start, String end, String category, String indCode) { QueryWrapper<CokingProcessMainEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("category", category) .eq("ind_code",indCode) .between("clock", start,end) .orderByAsc("sort"); return cokingProcessMainDao.selectList(queryWrapper); } @Override public void save(List<CokingProcessMainEntity> list) { cokingProcessMainDao.insert(list); } @Override ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceChartServiceImpl.java
@@ -6,6 +6,7 @@ import com.iailab.module.ansteel.coking.entity.CokingTraceConfEntity; import com.iailab.module.ansteel.coking.service.CokingTraceChartService; import com.iailab.module.ansteel.coking.service.CokingTraceConfService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -18,6 +19,7 @@ * @author lirm ${email} * @since 1.0.0 2025-04-16 */ @Slf4j @Service public class CokingTraceChartServiceImpl implements CokingTraceChartService { @@ -47,7 +49,7 @@ @Override public void save(String relId, String clock, String indType, Date startDate, Date endDate) { // 查询需要保存chart的配置 log.info("查询需要保存chart的配置"); Map<String, Object> map = new HashMap<>(); map.put("indType", indType); map.put("ext1", "chart"); @@ -55,12 +57,13 @@ if (CollectionUtils.isEmpty(list)) { return; } log.info("list.size={}", list.size()); List<CokingTraceChartEntity> entityList = new ArrayList<>(); list.forEach(value -> { CokingTraceChartEntity cokingTraceChartEntity = new CokingTraceChartEntity(); cokingTraceChartEntity.setRelId(relId); cokingTraceChartEntity.setName(value.toString()); cokingTraceChartEntity.setName(value.getIndName()); cokingTraceChartEntity.setClock(clock); cokingTraceChartEntity.setDataType(value.getDataType()); cokingTraceChartEntity.setDataNo(value.getPointNo()); ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java
文件已删除 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java
对比新文件 @@ -0,0 +1,158 @@ package com.iailab.module.ansteel.job.task; import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.ansteel.coking.entity.*; import com.iailab.module.ansteel.coking.service.*; import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum; import com.iailab.module.data.api.ind.IndItemApi; import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO; import com.iailab.module.data.api.point.DataPointApi; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** * @description: 主图主工序指标 * @author: dzd * @date: 2025/4/27 13:56 **/ @Slf4j @Component("runCokingMainTask") public class RunCokingMainTask implements ITask{ private Logger logger = LoggerFactory.getLogger(getClass()); @Resource private CokingProcessConfService cokingProcessConfService; @Resource private DataPointApi dataPointApi; @Resource private IndItemApi indItemApi; @Resource private CokingProcessMainService cokingProcessMainService; @Override public void run(String processTypes) { logger.info("runCokingMainTask,参数为:{}", processTypes); try { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.add(Calendar.DAY_OF_YEAR, -1); String clock = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY); // 清理旧数据 cokingProcessMainService.deleteByClock(clock); String[] split = processTypes.split(","); for (String processType : split) { CokingProcessConfEntity queryParams = new CokingProcessConfEntity(); queryParams.setIndType(processType); List<CokingProcessConfEntity> list = cokingProcessConfService.list(queryParams); if (CollectionUtils.isEmpty(list)) { logger.info("ConfList is Empty"); continue; } if (CollectionUtils.isEmpty(list)) { continue; } List<CokingProcessMainEntity> processMainEntities = new ArrayList<>(list.size()); for (CokingProcessConfEntity conf : list) { if (StringUtils.isBlank(conf.getDataType())) { logger.info("DataType is Empty"); continue; } if (StringUtils.isBlank(conf.getPointNo())) { logger.info("PointNo is Empty"); continue; } CokingProcessMainEntity processMainEntity = new CokingProcessMainEntity(); processMainEntity.setId(UUID.randomUUID().toString()); processMainEntity.setCategory("day"); processMainEntity.setClock(clock); processMainEntity.setInfoType(conf.getInfoType()); processMainEntity.setIndCode(conf.getIndCode()); processMainEntity.setIndName(conf.getIndName()); processMainEntity.setSort(conf.getSort()); // 日实际值 Double value = getConfValue(conf.getDataType(),conf.getPointNo()); processMainEntity.setRealValue(value == null ? BigDecimal.ZERO : BigDecimal.valueOf(value)); // 基准值、理论值 来源模型下发结果 Double standValue = getConfValue("DATAPOINT",conf.getExt1()); processMainEntity.setStandValue(standValue == null ? BigDecimal.ZERO : BigDecimal.valueOf(standValue)); Double theoryValue = getConfValue("DATAPOINT",conf.getExt2()); processMainEntity.setTheoryValue(theoryValue == null ? BigDecimal.ZERO : BigDecimal.valueOf(theoryValue)); // 计算 月累计 calendar.add(Calendar.DAY_OF_YEAR, -29); String clock_30 = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY); List<CokingProcessMainEntity> historyList_30 = cokingProcessMainService.historyList(clock_30, clock, "day",conf.getIndCode()); historyList_30.add(processMainEntity); double monthValue = historyList_30.stream().mapToDouble(e -> e.getRealValue().doubleValue()).sum(); processMainEntity.setMonthValue(BigDecimal.valueOf(monthValue)); // 计算 历史平均 calendar.add(Calendar.DAY_OF_YEAR, -60); String clock_90 = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY); List<CokingProcessMainEntity> historyList_90 = cokingProcessMainService.historyList(clock_90, clock, "day",conf.getIndCode()); historyList_90.add(processMainEntity); double avgValue = historyList_90.stream().mapToDouble(e -> e.getRealValue().doubleValue()).average().orElse(0.0); processMainEntity.setAvgValue(BigDecimal.valueOf(avgValue)); // 历史最优 double baseValue = 0.0; if (Double.valueOf(conf.getExt3()) > 0.0) { baseValue = historyList_90.stream().mapToDouble(e -> e.getRealValue().doubleValue()).max().orElse(0.0); }else { baseValue = historyList_90.stream().mapToDouble(e -> e.getRealValue().doubleValue()).min().orElse(0.0); } processMainEntity.setBaseValue(BigDecimal.valueOf(baseValue)); processMainEntities.add(processMainEntity); } cokingProcessMainService.save(processMainEntities); } } catch (Exception ex) { logger.error("runCokingMainTask运行异常",ex); } logger.info("runCokingMainTask运行完成"); } private Double getConfValue(String dataType, String pointNo) { Double value = null; switch (ProcessConfDataTypeEnum.getEumByCode(dataType)) { case DATAPOINT: List<String> points = new ArrayList<>(); points.add(pointNo); Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points); if (pointsRealValue.containsKey(pointNo)) { value = Double.valueOf(pointsRealValue.get(pointNo).toString()); } break; case IND: List<ApiIndItemValueDTO> indValues = indItemApi.queryIndItemDefaultValue(pointNo); if (!CollectionUtils.isEmpty(indValues)) { value = Double.valueOf(indValues.get(0).getDataValue().toString()); } break; case MODEL: break; default: break; } return value; } } ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java
@@ -262,6 +262,8 @@ analyIndEntity.setSort(i + 1); entityList.add(analyIndEntity); } // 清理旧数据 cokingAnalyIndService.delete(process, analyDate, analyClass); cokingAnalyIndService.save(entityList); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java
@@ -266,6 +266,8 @@ analyIndEntity.setSort(i+1); entityList.add(analyIndEntity); } // 清理旧数据 cokingAnalyIndService.delete(process, analyDate, analyClass); cokingAnalyIndService.save(entityList); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java
@@ -258,6 +258,8 @@ analyIndEntity.setSort(i + 1); entityList.add(analyIndEntity); } // 清理旧数据 cokingAnalyIndService.delete(process, analyDate, analyClass); cokingAnalyIndService.save(entityList); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java
@@ -265,6 +265,8 @@ analyIndEntity.setSort(i + 1); entityList.add(analyIndEntity); } // 清理旧数据 cokingAnalyIndService.delete(process, analyDate, analyClass); cokingAnalyIndService.save(entityList); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOffPowerOptimTask.java
@@ -37,20 +37,25 @@ logger.info("runPredictModuleTask定时任务正在执行,参数为:{}", params); try { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); MdkScheduleReqDTO dto = new MdkScheduleReqDTO(); dto.setScheduleTime(calendar.getTime()); dto.setScheduleCode(params); MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto); logger.info(params + "调度方案执行完成," + mdkScheduleRespDTO); Map<String, Object> result = mdkScheduleRespDTO.getResult(); for(Map.Entry<String, Object> entry : result.entrySet()) { for (Map.Entry<String, Object> entry : result.entrySet()) { String key = entry.getKey(); this.saveScheduleSuggest("无功优化", entry.getValue(), "WGYH", calendar.getTime()); } if (mdkApi.scheduleModelOut(mdkScheduleRespDTO)) { logger.info("调度方案结果下发成功"); } else { logger.error("调度方案结果下发失败"); } } catch (Exception ex) { logger.error("runPredictModuleTask运行异常",ex); logger.error("runPredictModuleTask运行异常", ex); } logger.info("runPredictModuleTask运行完成"); } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerCapacitorDetDao.java
对比新文件 @@ -0,0 +1,14 @@ package com.iailab.module.ansteel.power.dao; import com.iailab.framework.common.dao.BaseDao; import com.iailab.module.ansteel.power.entity.PowerCapacitorDetEntity; import org.apache.ibatis.annotations.Mapper; /** * @author PanZhibao * @Description * @createTime 2025年04月27日 */ @Mapper public interface PowerCapacitorDetDao extends BaseDao<PowerCapacitorDetEntity> { } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerCapacitorHisDao.java
对比新文件 @@ -0,0 +1,14 @@ package com.iailab.module.ansteel.power.dao; import com.iailab.framework.common.dao.BaseDao; import com.iailab.module.ansteel.power.entity.PowerCapacitorHisEntity; import org.apache.ibatis.annotations.Mapper; /** * @author PanZhibao * @Description * @createTime 2025年04月27日 */ @Mapper public interface PowerCapacitorHisDao extends BaseDao<PowerCapacitorHisEntity> { } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerNetDropdownDao.java
对比新文件 @@ -0,0 +1,14 @@ package com.iailab.module.ansteel.power.dao; import com.iailab.framework.common.dao.BaseDao; import com.iailab.module.ansteel.power.entity.PowerNetDropdownEntity; import org.apache.ibatis.annotations.Mapper; /** * @author PanZhibao * @Description * @createTime 2025年04月28日 */ @Mapper public interface PowerNetDropdownDao extends BaseDao<PowerNetDropdownEntity> { } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorDetEntity.java
@@ -12,7 +12,7 @@ * @createTime 2025年04月27日 */ @Data @TableName("t_power_adjusted_factor") @TableName("t_power_capacitor_det") public class PowerCapacitorDetEntity implements Serializable { private static final long serialVersionUID = 1L; @@ -21,4 +21,34 @@ */ @TableId private String id; /** * 投运状态父ID */ private String statusId; /** * 类型 */ private String type; /** * 电容器名称 */ private String name; /** * 测点编码 */ private String pointNo; /** * 备注 */ private String remark; /** * 排序 */ private Integer sort; } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorHisEntity.java
@@ -12,7 +12,7 @@ * @createTime 2025年04月27日 */ @Data @TableName("t_power_adjusted_factor") @TableName("t_power_capacitor_his") public class PowerCapacitorHisEntity implements Serializable { private static final long serialVersionUID = 1L; @@ -21,4 +21,34 @@ */ @TableId private String id; /** * 详情ID */ private String detId; /** * 电容器名称 */ private String name; /** * 状态 */ private String status; /** * 内容 */ private String content; /** * 备注 */ private String remark; /** * 创建时间 */ private String createDate; } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerGenStatusEntity.java
@@ -39,7 +39,7 @@ /** * 当前功率因数 */ private String curCOS; private String curCos; /** * 上限 */ ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerNetDropdownEntity.java
对比新文件 @@ -0,0 +1,51 @@ package com.iailab.module.ansteel.power.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; /** * @author PanZhibao * @Description * @createTime 2025年04月28日 */ @Data @TableName("t_power_net_dropdown") public class PowerNetDropdownEntity implements Serializable { private static final long serialVersionUID = 1L; /** * id */ @TableId private String id; private String pCode; private String groupName; private String nodeCode; private String nodeName; private String curP; private String curQ; private String curCos; private String ext1; private String ext2; private String ext3; private String ext4; private String ext5; private Integer sort; } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerCapacitorDetService.java
对比新文件 @@ -0,0 +1,16 @@ package com.iailab.module.ansteel.power.service; import com.iailab.module.ansteel.power.entity.PowerCapacitorDetEntity; import java.util.List; import java.util.Map; /** * @author PanZhibao * @Description * @createTime 2025年04月27日 */ public interface PowerCapacitorDetService { List<PowerCapacitorDetEntity> list(Map<String, Object> params); } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerCapacitorHisService.java
对比新文件 @@ -0,0 +1,16 @@ package com.iailab.module.ansteel.power.service; import com.iailab.module.ansteel.power.entity.PowerCapacitorHisEntity; import java.util.List; import java.util.Map; /** * @author PanZhibao * @Description * @createTime 2025年04月27日 */ public interface PowerCapacitorHisService { List<PowerCapacitorHisEntity> list(Map<String, Object> params); } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerNetDropdownService.java
对比新文件 @@ -0,0 +1,18 @@ package com.iailab.module.ansteel.power.service; import com.iailab.module.ansteel.power.entity.PowerNetDropdownEntity; import java.util.List; import java.util.Map; /** * @author PanZhibao * @Description * @createTime 2025年04月28日 */ public interface PowerNetDropdownService { PowerNetDropdownEntity getByNodeCode(String nodeCode); List<PowerNetDropdownEntity> list(Map<String, Object> params); } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerCapacitorDetServiceImpl.java
对比新文件 @@ -0,0 +1,35 @@ package com.iailab.module.ansteel.power.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.module.ansteel.power.dao.PowerCapacitorDetDao; import com.iailab.module.ansteel.power.entity.PowerCapacitorDetEntity; import com.iailab.module.ansteel.power.service.PowerCapacitorDetService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; /** * @author PanZhibao * @Description * @createTime 2025年04月27日 */ @Slf4j @Service public class PowerCapacitorDetServiceImpl implements PowerCapacitorDetService { @Resource private PowerCapacitorDetDao powerCapacitorDetDao; @Override public List<PowerCapacitorDetEntity> list(Map<String, Object> params) { String statusId = (String) params.get("statusId"); QueryWrapper<PowerCapacitorDetEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StringUtils.isNotBlank(statusId), "status_id", statusId) .orderByAsc("sort"); return powerCapacitorDetDao.selectList(queryWrapper); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerCapacitorHisServiceImpl.java
对比新文件 @@ -0,0 +1,35 @@ package com.iailab.module.ansteel.power.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.module.ansteel.power.dao.PowerCapacitorHisDao; import com.iailab.module.ansteel.power.entity.PowerCapacitorHisEntity; import com.iailab.module.ansteel.power.service.PowerCapacitorHisService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; /** * @author PanZhibao * @Description * @createTime 2025年04月27日 */ @Slf4j @Service public class PowerCapacitorHisServiceImpl implements PowerCapacitorHisService { @Resource private PowerCapacitorHisDao powerCapacitorHisDao; @Override public List<PowerCapacitorHisEntity> list(Map<String, Object> params) { String detId = (String) params.get("detId"); QueryWrapper<PowerCapacitorHisEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StringUtils.isNotBlank(detId), "det_id", detId) .orderByDesc("create_date"); return powerCapacitorHisDao.selectList(queryWrapper); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerNetDropdownServiceImpl.java
对比新文件 @@ -0,0 +1,46 @@ package com.iailab.module.ansteel.power.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.module.ansteel.power.dao.PowerNetDropdownDao; import com.iailab.module.ansteel.power.entity.PowerNetDropdownEntity; import com.iailab.module.ansteel.power.service.PowerNetDropdownService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /** * @author PanZhibao * @Description * @createTime 2025年04月28日 */ @Slf4j @Service public class PowerNetDropdownServiceImpl implements PowerNetDropdownService { @Autowired private PowerNetDropdownDao powerNetDropdownDao; @Override public PowerNetDropdownEntity getByNodeCode(String nodeCode) { QueryWrapper<PowerNetDropdownEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("node_code", nodeCode); return powerNetDropdownDao.selectOne(queryWrapper); } @Override public List<PowerNetDropdownEntity> list(Map<String, Object> params) { String pCode = (String) params.get("pCode"); String groupName = (String) params.get("groupName"); String neNodeName = (String) params.get("neNodeName"); QueryWrapper<PowerNetDropdownEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StringUtils.isNotBlank(pCode), "p_code", pCode) .eq(StringUtils.isNotBlank(groupName), "group_name", groupName) .ne(StringUtils.isNotBlank(neNodeName), "node_name", neNodeName) .orderByAsc("sort"); return powerNetDropdownDao.selectList(queryWrapper); } } ansteel-biz/src/main/resources/application-dev.yaml
@@ -70,10 +70,10 @@ access-log: # 访问日志的配置项 enable: false token: base-url: http://127.0.0.1:48080/admin-api #平台接口url,使用时需修改成真实的ip和端口 base-url: http://127.0.0.1:48080/admin-api/system #平台接口url,使用时需修改成真实的ip和端口 tenant-id: 176 #租户id client-id: ansteel #租户OAuth2客户端id client-secret: q3vY7K9PmFjW1xLbN6rTtZz2cV4B5sD0 #租户OAuth2客户端密钥 username: ansteel password: 123456 password: xY7^zW4.vU ansteel-biz/src/main/resources/application.yaml
@@ -153,6 +153,8 @@ - t_power_run_state - t_power_net_factor - t_power_capacitor_status - t_power_capacitor_det - t_power_capacitor_his - t_power_control_main - t_power_control_det - t_power_gen_status @@ -175,6 +177,7 @@ - t_coking_trace_ind - t_power_demand - t_power_adjusted_factor - t_power_net_dropdown - t_coking_overview_ind swagger: title: 鞍钢鲅鱼圈能源管控系统 doc/鞍钢数据接口文档_master.docBinary files differ