From d0d5011558c12337410350642e8c41da211e261b Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期三, 22 一月 2025 14:53:18 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- iailab-module-system/iailab-module-system-biz/src/main/resources/application-dev.yaml | 66 ------------- iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java | 23 +--- iailab-module-system/iailab-module-system-biz/pom.xml | 6 - iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointCollectTaskNet1h.java | 40 ++++++++ iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/DataPointFreqEnum.java | 3 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java | 8 - iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java | 35 ++++-- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java | 1 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java | 84 ++-------------- iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml | 9 - 10 files changed, 85 insertions(+), 190 deletions(-) diff --git a/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/DataPointFreqEnum.java b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/DataPointFreqEnum.java index 6221f9c..67c8610 100644 --- a/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/DataPointFreqEnum.java +++ b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/DataPointFreqEnum.java @@ -11,7 +11,8 @@ public enum DataPointFreqEnum { NET_10S("10s", 10), NET_30S("30s", 30), - NET_1MIN("1min",60); + NET_1MIN("1min",60), + NET_1H("1h",60*60); private String code; diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java index 13e4146..6e1afbd 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java +++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java @@ -9,6 +9,7 @@ import com.iailab.module.data.api.dto.IndexQueryDTO; import com.iailab.module.data.api.dto.echarts.BarLineDTO; import com.iailab.module.data.api.dto.echarts.SeriesItem; +import com.iailab.module.data.api.ind.IndItemApi; import com.iailab.module.data.api.ind.dto.ApiIndItemQueryDTO; import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO; import com.iailab.module.data.api.plan.PlanItemApi; @@ -66,6 +67,9 @@ @Autowired private PlanItemApi planItemApi; + + @Autowired + private IndItemApi indItemApi; @Autowired private IndItemCollector indItemCollector; @@ -303,28 +307,15 @@ @PermitAll @GetMapping("/query-ind/default-value") @Operation(summary = "查询指标默认值") - public CommonResult<List<ApiIndItemValueDTO>> queryIndItemDefaultValue(HttpServletResponse response, HttpServletRequest - request,@RequestParam String itemNo) throws Exception { - apiSecurityUtils.validate(request); - List<IndItemValueVO> list = indItemCollector.queryValue(itemNo); - List<ApiIndItemValueDTO> dtoList = new ArrayList<>(); - list.forEach(item -> { - if (item != null) { - ApiIndItemValueDTO dto = new ApiIndItemValueDTO(); - dto.setDataTime(item.getDataTime()); - dto.setDataValue(item.getDataValue().doubleValue()); - dtoList.add(dto); - } - }); - return success(dtoList); + public CommonResult<List<ApiIndItemValueDTO>> queryIndItemDefaultValue(@RequestParam String itemNo) { + return success(indItemApi.queryIndItemDefaultValue(itemNo)); } @PermitAll @PostMapping("/query-ind/history-value") @Operation(summary = "查询指标历史值") public CommonResult<List<ApiIndItemValueDTO>> queryIndItemHistoryValue(@RequestBody ApiIndItemQueryDTO dto) { - List<IndItemValueVO> list = indItemCollector.queryValue(dto.getItemNo(), dto.getStart(), dto.getEnd()); - return success(ConvertUtils.sourceToTarget(list, ApiIndItemValueDTO.class)); + return success(indItemApi.queryIndItemHistoryValue(dto)); } @PermitAll diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointCollectTaskNet1h.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointCollectTaskNet1h.java new file mode 100644 index 0000000..c0d2f29 --- /dev/null +++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointCollectTaskNet1h.java @@ -0,0 +1,40 @@ +package com.iailab.module.data.job.task; + +import com.iailab.module.data.point.collection.PointCollector; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.Calendar; + +/** + * @description: Point采集器1h + * @author: dzd + * @date: 2025/1/18 14:07 + **/ +@Component("pointCollectTaskNet1h") +public class PointCollectTaskNet1h implements ITask { + private Logger logger = LoggerFactory.getLogger(getClass()); + + private final String NET = "1h"; + + @Resource + private PointCollector pointCollector; + + @Override + public void run(String params){ + logger.debug("pointCollectTaskNet1h定时任务正在执行,参数为:{}", params); + try { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.MILLISECOND, 0); + pointCollector.collect(calendar.getTime(), NET); + logger.info("pointCollectTaskNet1h定时任务完成时间:" + LocalDateTime.now()); + } catch (Exception ex) { + ex.printStackTrace(); + logger.error("pointCollectTaskNet1h定时任务失败时间:" + LocalDateTime.now()); + } + + } +} diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java index 6f6d219..a56f5d5 100644 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java @@ -107,17 +107,9 @@ @Operation(summary = "获取最后预测值") Map<String, BigDecimal> getPredictLastValue(@RequestBody PredictLastValueReqVO reqVO); - @GetMapping("/predict-data/electric") - @Operation(summary = "电力功率因数预测结果查询") - Map<String,List<Object[]>> getElectricPredictData(String itemCode); - @GetMapping("/schedule-data/last") @Operation(summary = "调度模型最新结果查询") List<StScheduleRecordVO> getLastScheduleData(@RequestParam("scheduleCode") String scheduleCode,@RequestParam("limit") Integer limit); - - @GetMapping("/machineRealTimeStatus") - @Operation(summary = "发电机组实时状态查询") - List<Map<String, Object>> getRealTimeStatus(@RequestBody List<Map<String, Object>> machines); @PostMapping("/predict-data/itemNo") @Operation(summary = "查询时间范围内预测结果") diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java index faa7294..3c58720 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java @@ -667,43 +667,6 @@ } @Override - public Map<String,List<Object[]>> getElectricPredictData(String itemCode) { - ItemVO predictItem = mmPredictItemService.getItemByItemNo(itemCode); - if (null == predictItem) { - return new HashMap<>(); - } - List<Integer> resultIndexs = new ArrayList<>(); - resultIndexs.add(0); - resultIndexs.add(1); - resultIndexs.add(2); - List<MmItemOutputEntity> outPuts = mmItemOutputService.getByItemid(predictItem.getId(),"predictValues",resultIndexs); - if (CollectionUtils.isEmpty(outPuts)) { - return new HashMap<>(); - } - InfluxModelResultByOutPutIdsPOJO pojo = new InfluxModelResultByOutPutIdsPOJO(); - pojo.setOutPutIds(outPuts.stream().map(MmItemOutputEntity::getId).collect(Collectors.toList())); - pojo.setType(DataTypeEnum.FLOAT.getCode()); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(predictItem.getLastTime()); - calendar.add(Calendar.DAY_OF_YEAR, 7); - Map<String, List<InfluxModelResultVO>> outPutDatas = influxDBService.queryModelResultsByOutPutIds(pojo, predictItem.getLastTime(), calendar.getTime()); - Map<String,List<Object[]>> result = new HashMap<>(outPuts.size()); - for (MmItemOutputEntity outPut : outPuts) { - String outPutId = outPut.getId(); - if (outPutDatas.containsKey(outPutId)) { - List<InfluxModelResultVO> influxModelResultVOS = outPutDatas.get(outPutId); - result.put(null == outPut.getResultIndex() ? outPut.getResultstr() : outPut.getResultstr()+"_"+outPut.getResultIndex(),influxModelResultVOS.stream().map(e -> { - Object[] values = new Object[2]; - values[0] = DateUtils.format(Date.from(e.getTimestamp()), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); - values[1] = Double.valueOf(e.getValue().toString()); - return values; - }).collect(Collectors.toList())); - } - } - return result; - } - - @Override public List<StScheduleRecordVO> getLastScheduleData(String scheduleCode, Integer limit) { if (StringUtils.isBlank(scheduleCode)) { return null; @@ -712,46 +675,27 @@ } @Override - public List<Map<String, Object>> getRealTimeStatus(List<Map<String, Object>> machines) { - List<String> pointNos = new ArrayList<>(16); - for (Map<String, Object> machine : machines) { - List<String> list = (List<String>) machine.get("pointNos"); - pointNos.addAll(list); - } - Map<String, Object> pointValues = dataPointApi.queryPointsRealValue(pointNos); - List<Map<String, Object>> results = new ArrayList<>(); - for (Map<String, Object> machine : machines) { - List<String> pointNoList = (List<String>) machine.get("pointNos"); - if (!pointValues.containsKey(pointNoList.get(0)) || !pointValues.containsKey(pointNoList.get(1))) { - machine.put("status",false); - machine.put("num",0); - results.add(machine); - continue; - } - Double PValue = Double.valueOf(pointValues.get(pointNoList.get(0)).toString()); - Double QValue = Double.valueOf(pointValues.get(pointNoList.get(1)).toString()); - Double cos = calculateCos(PValue, QValue); - if (cos.equals(0.0)) { - machine.put("status",false); - machine.put("num",0); - }else { - machine.put("status",true); - machine.put("num",cos); - } - results.add(machine); - } - return results; - } - - @Override public Map<String, List<Object[]>> getPredictDataItemNo(PreDataItemNoReqVO reqVO) { - if (StringUtils.isBlank(reqVO.getItemNo()) || null == reqVO.getStartTime() || null == reqVO.getEndTime()) { + if (StringUtils.isBlank(reqVO.getItemNo())) { return new HashMap<>(); } ItemVO predictItem = mmPredictItemService.getItemByItemNo(reqVO.getItemNo()); if (null == predictItem) { return new HashMap<>(); } + + // 默认开始时间:运行时间 + if (null == reqVO.getStartTime()) { + reqVO.setStartTime(predictItem.getLastTime()); + } + // 默认结束时间:运行时间+预测长度*粒度 + if (null == reqVO.getStartTime()) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(predictItem.getLastTime()); + calendar.add(Calendar.SECOND,predictItem.getPredictLength() * predictItem.getGranularity()); + reqVO.setEndTime(calendar.getTime()); + } + List<String> itemNos = new ArrayList<String>(){{ add(reqVO.getItemNo()); }}; diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java index 96116e5..a4c747b 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java @@ -12,6 +12,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -20,9 +21,7 @@ import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.iailab.framework.common.pojo.CommonResult.success; @@ -180,12 +179,6 @@ return CommonResult.success(data); } - @GetMapping("/predict-data/electric") - @Operation(summary = "电力功率因数预测结果查询") - public CommonResult<Map<String,List<Object[]>>> getElectricPredictData(@RequestParam String itemCode) { - Map<String,List<Object[]>> data = mcsApi.getElectricPredictData(itemCode); - return CommonResult.success(data); - } @GetMapping("/schedule-data/last") @Operation(summary = "调度模型最新结果查询") public CommonResult<List<StScheduleRecordVO>> getLastScheduleData(@RequestParam String scheduleCode, @RequestParam Integer limit) { @@ -195,10 +188,26 @@ return CommonResult.success(mcsApi.getLastScheduleData(scheduleCode,limit)); } - @PostMapping("/machineRealTimeStatus") - @Operation(summary = "发电机组实时状态查询") - CommonResult<List<Map<String, Object>>> getRealTimeStatus(@RequestBody List<Map<String, Object>> machines) { - return CommonResult.success(mcsApi.getRealTimeStatus(machines)); + @PostMapping("/schedule-data/last/more") + @Operation(summary = "多个调度模型最新结果查询") + public CommonResult<Map<String,List<StScheduleRecordVO>>> getMoreLastScheduleData(@RequestBody Map<String,Object> params) { + if (!params.containsKey("scheduleCodes")) { + return success(new HashMap<>()); + } + Set<String> scheduleCodes = new HashSet<>(((List<String>) params.get("scheduleCodes"))); + if (CollectionUtils.isEmpty(scheduleCodes)) { + return success(new HashMap<>()); + } + Integer limit = 1; + if (params.containsKey("limit")) { + limit = Integer.parseInt(params.get("limit").toString()); + } + + Map<String,List<StScheduleRecordVO>> result = new HashMap<>(scheduleCodes.size()); + for (String scheduleCode : scheduleCodes) { + result.put(scheduleCode,mcsApi.getLastScheduleData(scheduleCode, limit)); + } + return CommonResult.success(result); } @PostMapping("/predict-data/itemNo") diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java index ee15741..75aefb0 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java @@ -86,7 +86,6 @@ * * @param predictResult */ - @Async @DSTransactional public void savePredictResult(PredictResultVO predictResult) { Map<String, List<DataValueVO>> resultMap = convertToPredictData(predictResult); diff --git a/iailab-module-system/iailab-module-system-biz/pom.xml b/iailab-module-system/iailab-module-system-biz/pom.xml index 54eec59..70eed45 100644 --- a/iailab-module-system/iailab-module-system-biz/pom.xml +++ b/iailab-module-system/iailab-module-system-biz/pom.xml @@ -90,12 +90,6 @@ <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> - <!-- Job 定时任务相关 --> - <dependency> - <groupId>com.iailab</groupId> - <artifactId>iailab-common-job</artifactId> - </dependency> - <!-- 消息队列相关 --> <dependency> <groupId>com.iailab</groupId> diff --git a/iailab-module-system/iailab-module-system-biz/src/main/resources/application-dev.yaml b/iailab-module-system/iailab-module-system-biz/src/main/resources/application-dev.yaml index 733004c..4188c19 100644 --- a/iailab-module-system/iailab-module-system-biz/src/main/resources/application-dev.yaml +++ b/iailab-module-system/iailab-module-system-biz/src/main/resources/application-dev.yaml @@ -72,12 +72,6 @@ kafka: bootstrap-servers: 127.0.0.1:9092 # 指定 Kafka Broker 地址,可以设置多个,以逗号分隔 ---- #################### 定时任务相关配置 #################### -xxl: - job: - admin: - addresses: http://172.16.8.100:9090/xxl-job-admin # 调度中心部署跟地址 - --- #################### 服务保障相关配置 #################### # Lock4j 配置项 @@ -94,39 +88,6 @@ base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator exposure: include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。 - -# Spring Boot Admin 配置项 -spring: - boot: - admin: - # Spring Boot Admin Client 客户端的相关配置 - client: - instance: - service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME] - # Spring Boot Admin Server 服务端的相关配置 - context-path: /admin # 配置 Spring - ---- #################### 微信公众号、小程序相关配置 #################### -wx: - mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档 - # app-id: wx041349c6f39b268b - # secret: 5abee519483bc9f8cb37ce280e814bd0 - app-id: wx5b23ba7a5589ecbb # 测试号 - secret: 2a7b3b20c537e52e74afd395eb85f61f - # 存储配置,解决 AccessToken 的跨节点的共享 - config-storage: - type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取 - key-prefix: wx # Redis Key 的前缀 - http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台 - miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档 - # appid: wx62056c0d5e8db250 - # secret: 333ae72f41552af1e998fe1f54e1584a - appid: wx63c280fe3248a3e7 # wenhualian的接口测试号 - secret: 6f270509224a7ae1296bbf1c8cb97aed - config-storage: - type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取 - key-prefix: wa # Redis Key 的前缀 - http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台 --- #################### 平台相关配置 #################### @@ -146,30 +107,3 @@ demo: false # 开启演示模式 captcha: enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试 - -justauth: - enabled: true - type: - DINGTALK: # 钉钉 - client-id: dingvrnreaje3yqvzhxg - client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI - ignore-check-redirect-uri: true - WECHAT_ENTERPRISE: # 企业微信 - client-id: wwd411c69a39ad2e54 - client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw - agent-id: 1000004 - ignore-check-redirect-uri: true - # noinspection SpringBootApplicationYaml - WECHAT_MINI_APP: # 微信小程序 - client-id: ${wx.miniapp.appid} - client-secret: ${wx.miniapp.secret} - ignore-check-redirect-uri: true - ignore-check-state: true # 微信小程序,不会使用到 state,所以不进行校验 - WECHAT_MP: # 微信公众号 - client-id: ${wx.mp.app-id} - client-secret: ${wx.mp.secret} - ignore-check-redirect-uri: true - cache: - type: REDIS - prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE:: - timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟 diff --git a/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml b/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml index c7218fe..c2167c8 100644 --- a/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml +++ b/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml @@ -136,15 +136,6 @@ listener: missing-topics-fatal: false # 消费监听接口监听的主题不存在时,默认会报错。所以通过设置为 false ,解决报错 ---- #################### 定时任务相关配置 #################### - -xxl: - job: - executor: - appname: ${spring.application.name} # 执行器 AppName - logpath: @log.path@/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径 - accessToken: default_token # 执行器通讯TOKEN - --- #################### 验证码相关配置 #################### aj: -- Gitblit v1.9.3