From 9c9e6a5e192e38ed45497baab2ce4b7b9a216985 Mon Sep 17 00:00:00 2001 From: dongyukun <1208714201@qq.com> Date: 星期二, 29 四月 2025 11:29:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java | 2 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetDropdownDTO.java | 9 ansteel-biz/db/mysql.sql | 27 + ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerNetDropdownServiceImpl.java | 46 + ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorHisEntity.java | 32 + ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingProcessMainServiceImpl.java | 16 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOffPowerOptimTask.java | 13 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerCapacitorDetDTO.java | 28 + ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java | 2 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java | 158 ++++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java | 6 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandQueryDTO.java | 39 + ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorQuery.java | 28 + ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceChartServiceImpl.java | 7 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProcessMainEntity.java | 25 ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerCapacitorHisService.java | 16 ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerNetDropdownDao.java | 14 ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerNetDropdownService.java | 18 ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerNetDropdownEntity.java | 51 ++ ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java | 2 ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerGenStatusEntity.java | 2 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java | 2 ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerCapacitorDetServiceImpl.java | 35 + ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerCapacitorDetDao.java | 14 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingOverviewIndDTO.java | 3 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceChartService.java | 1 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingProcessMainService.java | 4 ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerCapacitorHisServiceImpl.java | 35 + ansteel-biz/src/main/resources/application.yaml | 3 /dev/null | 139 ----- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java | 453 +++++++++++++----- ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java | 11 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingProcessMainDTO.java | 40 + ansteel-biz/src/main/resources/application-dev.yaml | 4 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java | 2 ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerCapacitorDetService.java | 16 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java | 2 ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerCapacitorHisDao.java | 14 doc/鞍钢数据接口文档_master.doc | 0 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerCapacitorHisDTO.java | 35 + ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorDetEntity.java | 32 + 41 files changed, 1,090 insertions(+), 296 deletions(-) diff --git a/ansteel-biz/db/mysql.sql b/ansteel-biz/db/mysql.sql index 0edec8f..ea9a423 100644 --- a/ansteel-biz/db/mysql.sql +++ b/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='焦化工序概况指标数据结果'; \ No newline at end of file +) 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='电力下拉关系表'; \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java index 9278972..cbfcd6d 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java +++ b/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());//焦化减高炉煤气-数量 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 1415e48..a188daa 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 @@ -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); - } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/CokingProcessMainDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/CokingProcessMainDTO.java deleted file mode 100644 index 7460c20..0000000 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/CokingProcessMainDTO.java +++ /dev/null @@ -1,50 +0,0 @@ -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月11日 - */ -@Schema(description = "焦化工序-主工序指标") -@Data -public class CokingProcessMainDTO implements Serializable { - private static final long serialVersionUID = 1L; - - @Schema(description = "ID") - private String id; - - @Schema(description = "类别(日:day,班:class)") - private String category; - - @Schema(description = "查询时间") - private String clock; - - @Schema(description = "信息类型(0:生产情况,1:能源发生,2:能源消耗)") - private String infoType; - - @Schema(description = "指标名称") - private String indName; - - @Schema(description = "历史平均") - private String avgValue; - - @Schema(description = "理论值") - private String theoryValue; - - @Schema(description = "实际值") - private String actualValue; - - @Schema(description = "基准值") - private String standValue; - - @Schema(description = "实时数据") - private String realValue; - - @Schema(description = "排序") - private Integer sort; -} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerCapacitorDetDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerCapacitorDetDTO.java new file mode 100644 index 0000000..cf7bfe5 --- /dev/null +++ b/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; +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerCapacitorHisDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerCapacitorHisDTO.java new file mode 100644 index 0000000..70481fa --- /dev/null +++ b/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; +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandQueryDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandQueryDTO.java new file mode 100644 index 0000000..4bba8d6 --- /dev/null +++ b/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; +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDropdownDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetDropdownDTO.java similarity index 68% rename from ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDropdownDTO.java rename to ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetDropdownDTO.java index 61855c9..cbda4e1 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDropdownDTO.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetDropdownDTO.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; + } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorQuery.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorQuery.java new file mode 100644 index 0000000..83bceb7 --- /dev/null +++ b/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; +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java index dffe791..4fc2167 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java +++ b/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; diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingOverviewIndDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingOverviewIndDTO.java index 1bada57..4807f22 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingOverviewIndDTO.java +++ b/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; /** * 单位 diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingProcessMainDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingProcessMainDTO.java new file mode 100644 index 0000000..5a0c232 --- /dev/null +++ b/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; +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProcessMainEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProcessMainEntity.java index 71ca890..5c45fa4 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProcessMainEntity.java +++ b/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; } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java index 82054f9..e3ac3bd 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java +++ b/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); } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingProcessMainService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingProcessMainService.java index ad55e87..d0e9e98 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingProcessMainService.java +++ b/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); } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceChartService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceChartService.java index b9590c9..924db4c 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingTraceChartService.java +++ b/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); diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java index c151fde..756fac2 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java +++ b/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); + + + } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingProcessMainServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingProcessMainServiceImpl.java index 42fa27f..8de2f5c 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingProcessMainServiceImpl.java +++ b/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 diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceChartServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceChartServiceImpl.java index f88cad3..c467c27 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingTraceChartServiceImpl.java +++ b/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()); diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java deleted file mode 100644 index 184046e..0000000 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.iailab.module.ansteel.job.task; - -import com.iailab.framework.common.util.date.DateUtils; -import com.iailab.module.ansteel.coking.entity.CokingProcessConfEntity; -import com.iailab.module.ansteel.coking.entity.CokingProcessMainEntity; -import com.iailab.module.ansteel.coking.service.CokingProcessConfService; -import com.iailab.module.ansteel.coking.service.CokingProcessMainService; -import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum; -import com.iailab.module.ansteel.common.enums.ProcessIndDataTypeEnum; -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 org.apache.commons.lang3.ObjectUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; - -import javax.annotation.Resource; -import java.util.*; -import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Collectors; - -/** - * @author HouZhongjian - * @Description - * @createTime 2025年04月12日 - */ -@Component("runCokingMainDayTask") -public class RunCokingMainDayTask implements ITask { - - private Logger logger = LoggerFactory.getLogger(getClass()); - - @Resource - private CokingProcessConfService cokingProcessConfService; - - @Resource - private CokingProcessMainService cokingProcessMainService; - - @Resource - private DataPointApi dataPointApi; - - @Resource - private IndItemApi indItemApi; - - @Override - public void run(String params) { - logger.info("RunCokingMainDayTask,参数为:{}", params); - try { - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.MILLISECOND, 0); - calendar.set(Calendar.SECOND, 0); - calendar.add(Calendar.DAY_OF_YEAR, -1); - String clock = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY); - CokingProcessConfEntity queryParams = new CokingProcessConfEntity(); - queryParams.setIndType("main"); - List<CokingProcessConfEntity> list = cokingProcessConfService.list(queryParams); - if (CollectionUtils.isEmpty(list)) { - logger.info("ConfLis is Empty"); - return; - } - // 先建立ext1到sort的映射关系 - Map<String, Integer> ext1ToSort = list.stream() - .collect(Collectors.toMap( - CokingProcessConfEntity::getExt1, - CokingProcessConfEntity::getSort, - (oldValue, newValue) -> oldValue)); - - // 然后按这个关系排序分组 - Map<String, List<CokingProcessConfEntity>> groupMap = list.stream() - .sorted(Comparator.comparing(CokingProcessConfEntity::getSort)) - .collect(Collectors.collectingAndThen( - Collectors.groupingBy(CokingProcessConfEntity::getExt1), - map -> map.entrySet().stream() - .sorted(Comparator.comparingInt( - e -> ext1ToSort.get(e.getKey()))) // 按ext1对应的sort值排序 - .collect(Collectors.toMap( - Map.Entry::getKey, - Map.Entry::getValue, - (a, b) -> a, - LinkedHashMap::new)))); - - logger.info("清理旧数据"); - cokingProcessMainService.deleteByClock(clock); - - //计数器 - AtomicReference<Integer> counter = new AtomicReference<>(1); - groupMap.forEach((group, confList) -> { - CokingProcessMainEntity cokingProcessMainEntity = new CokingProcessMainEntity(); - cokingProcessMainEntity.setInfoType("0"); - cokingProcessMainEntity.setSort(counter.getAndSet(counter.get() + 1)); - cokingProcessMainEntity.setCategory("day"); - CokingProcessConfEntity cokingProcessConfEntity = confList.get(0); - cokingProcessMainEntity.setIndName(cokingProcessConfEntity.getExt3()); - cokingProcessMainEntity.setClock(clock); - confList.forEach(conf -> { - String value = ""; - switch (ProcessConfDataTypeEnum.getEumByCode(conf.getDataType())) { - case DATAPOINT: - List<String> points = new ArrayList<>(); - points.add(conf.getPointNo()); - Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points); - value = pointsRealValue.get(conf.getPointNo()).toString(); - break; - case IND: - List<ApiIndItemValueDTO> indValues = indItemApi.queryIndItemDefaultValue(conf.getPointNo()); - if (!CollectionUtils.isEmpty(indValues)) { - value = indValues.get(indValues.size() - 1).getDataValue().toString(); - } - break; - default: - break; - } - //保存数据 - if(ObjectUtils.isNotEmpty(value)) { - if(conf.getExt2().equals(ProcessIndDataTypeEnum.LSPJ.getCode())) { - cokingProcessMainEntity.setAvgValue(value.toString()); - } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.LLZ.getCode())) { - cokingProcessMainEntity.setTheoryValue(value.toString()); - } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SJZ.getCode())) { - cokingProcessMainEntity.setActualValue(value.toString()); - } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.JZZ.getCode())) { - cokingProcessMainEntity.setStandValue(value.toString()); - } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SSSJ.getCode())) { - cokingProcessMainEntity.setRealValue(value.toString()); - } - } - }); - cokingProcessMainService.save(cokingProcessMainEntity); - }); - - } catch (Exception ex) { - logger.error("RunCokingMainDayTask运行异常"); - ex.printStackTrace(); - } - logger.info("RunCokingMainDayTask运行完成"); - - } -} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java new file mode 100644 index 0000000..59da296 --- /dev/null +++ b/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; + } +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java index 3b7b409..4a612a4 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java +++ b/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); } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java index c31f557..700f866 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java +++ b/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); } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java index 080565d..58f6eb8 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java +++ b/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); } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java index cfef52f..1232a9f 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java +++ b/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); } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOffPowerOptimTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOffPowerOptimTask.java index 9b5ba52..f6d9e71 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOffPowerOptimTask.java +++ b/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运行完成"); } diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerCapacitorDetDao.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerCapacitorDetDao.java new file mode 100644 index 0000000..38217f9 --- /dev/null +++ b/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> { +} diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerCapacitorHisDao.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerCapacitorHisDao.java new file mode 100644 index 0000000..7e5c577 --- /dev/null +++ b/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> { +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerNetDropdownDao.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerNetDropdownDao.java new file mode 100644 index 0000000..287ec71 --- /dev/null +++ b/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> { +} diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorDetEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorDetEntity.java index c133ab5..1c7d5a4 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorDetEntity.java +++ b/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; } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorHisEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorHisEntity.java index 17f9bba..2f6047b 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorHisEntity.java +++ b/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; } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerGenStatusEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerGenStatusEntity.java index 628f7bd..420d2aa 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerGenStatusEntity.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerGenStatusEntity.java @@ -39,7 +39,7 @@ /** * 当前功率因数 */ - private String curCOS; + private String curCos; /** * 上限 */ diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerNetDropdownEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerNetDropdownEntity.java new file mode 100644 index 0000000..3f8d1e2 --- /dev/null +++ b/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; +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerCapacitorDetService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerCapacitorDetService.java new file mode 100644 index 0000000..5be4f12 --- /dev/null +++ b/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); +} diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerCapacitorHisService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerCapacitorHisService.java new file mode 100644 index 0000000..1d432a1 --- /dev/null +++ b/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); +} diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerNetDropdownService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerNetDropdownService.java new file mode 100644 index 0000000..95f87fd --- /dev/null +++ b/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); +} diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerCapacitorDetServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerCapacitorDetServiceImpl.java new file mode 100644 index 0000000..58d6c4a --- /dev/null +++ b/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); + } +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerCapacitorHisServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerCapacitorHisServiceImpl.java new file mode 100644 index 0000000..7d70374 --- /dev/null +++ b/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); + } +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerNetDropdownServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerNetDropdownServiceImpl.java new file mode 100644 index 0000000..9bb49b3 --- /dev/null +++ b/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); + } +} \ No newline at end of file diff --git a/ansteel-biz/src/main/resources/application-dev.yaml b/ansteel-biz/src/main/resources/application-dev.yaml index 5e04a8e..5f19417 100644 --- a/ansteel-biz/src/main/resources/application-dev.yaml +++ b/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 diff --git a/ansteel-biz/src/main/resources/application.yaml b/ansteel-biz/src/main/resources/application.yaml index 44164a0..7a959cd 100644 --- a/ansteel-biz/src/main/resources/application.yaml +++ b/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: 鞍钢鲅鱼圈能源管控系统 diff --git "a/doc/\351\236\215\351\222\242\346\225\260\346\215\256\346\216\245\345\217\243\346\226\207\346\241\243_master.doc" "b/doc/\351\236\215\351\222\242\346\225\260\346\215\256\346\216\245\345\217\243\346\226\207\346\241\243_master.doc" index fedfe85..2b0fa2b 100644 --- "a/doc/\351\236\215\351\222\242\346\225\260\346\215\256\346\216\245\345\217\243\346\226\207\346\241\243_master.doc" +++ "b/doc/\351\236\215\351\222\242\346\225\260\346\215\256\346\216\245\345\217\243\346\226\207\346\241\243_master.doc" Binary files differ -- Gitblit v1.9.3