ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/CokingController.java
@@ -12,6 +12,7 @@ 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.ansteel.common.enums.TraceProcessTypeEnum; 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; @@ -196,6 +197,21 @@ @GetMapping("/trace-suggest/list") @Operation(summary = "焦化工序-异常溯源及优化建议") public CommonResult<List<CokingTraceSuggestDTO>> getTraceSuggestList(@RequestParam Map<String, Object> params) { String relId = (String) params.get("relId"); String processType = (String) params.get("processType"); if (StringUtils.isBlank(relId) && StringUtils.isNotBlank(processType)) { // 查找最新的relId Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_YEAR, -1); String clock = DateUtils.format(calendar.getTime(), "yyyy-MM-dd"); CokingAnalyIndEntity analyInd = cokingAnalyIndService.get(TraceProcessTypeEnum.getEumByCode(processType).getProcess(), clock); if (analyInd != null) { relId = analyInd.getRelId(); params.put("relId", relId); } else { return success(new ArrayList<>()); } } List<CokingTraceSuggestEntity> list = cokingTraceSuggestService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingTraceSuggestDTO.class)); } @@ -203,6 +219,21 @@ @GetMapping("/trace-ind/list") @Operation(summary = "焦化工序-异常溯源指标") public CommonResult<List<CokingTraceIndDTO>> getTraceIndList(@RequestParam Map<String, Object> params) { String relId = (String) params.get("relId"); String processType = (String) params.get("processType"); if (StringUtils.isBlank(relId) && StringUtils.isNotBlank(processType)) { // 查找最新的relId Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_YEAR, -1); String clock = DateUtils.format(calendar.getTime(), "yyyy-MM-dd"); CokingAnalyIndEntity analyInd = cokingAnalyIndService.get(TraceProcessTypeEnum.getEumByCode(processType).getProcess(), clock); if (analyInd != null) { relId = analyInd.getRelId(); params.put("relId", relId); } else { return success(new ArrayList<>()); } } List<CokingTraceIndEntity> list = cokingTraceIndService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingTraceIndDTO.class)); } @@ -210,6 +241,21 @@ @GetMapping("/trace-deviation/list") @Operation(summary = "焦化工序-异常溯源影响因素偏差值") public CommonResult<List<CokingTraceDeviationDTO>> getTraceDeviationList(@RequestParam Map<String, Object> params) { String relId = (String) params.get("relId"); String processType = (String) params.get("processType"); if (StringUtils.isBlank(relId) && StringUtils.isNotBlank(processType)) { // 查找最新的relId Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_YEAR, -1); String clock = DateUtils.format(calendar.getTime(), "yyyy-MM-dd"); CokingAnalyIndEntity analyInd = cokingAnalyIndService.get(TraceProcessTypeEnum.getEumByCode(processType).getProcess(), clock); if (analyInd != null) { relId = analyInd.getRelId(); params.put("relId", relId); } else { return success(new ArrayList<>()); } } List<CokingTraceDeviationEntity> list = cokingTraceDeviationService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingTraceDeviationDTO.class)); } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java
@@ -1,8 +1,16 @@ package com.iailab.module.ansteel.api.controller.admin; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.ansteel.api.dto.*; import com.iailab.module.ansteel.api.service.DataService; import com.iailab.module.ansteel.coking.dto.CokingTraceChartDTO; import com.iailab.module.ansteel.coking.dto.CokingTraceDataDTO; import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum; import com.iailab.module.data.api.ind.dto.ApiIndItemQueryDTO; import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO; import com.iailab.module.data.api.point.dto.ApiPointValueDTO; import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO; import com.iailab.module.model.api.mcs.dto.PreDataSingleChartReqVO; import com.iailab.module.model.api.mcs.dto.StAlarmAndSuggestReqVO; import io.swagger.v3.oas.annotations.Operation; @@ -10,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.*; import static com.iailab.framework.common.pojo.CommonResult.success; @@ -59,5 +68,11 @@ return success(dataService.ignoreSuggest(ReqVO)); } @GetMapping("/data/history-value") @Operation(summary = "指标/测点历史数据") public CommonResult<List<Object[]>> getHistoryValue(@RequestParam Map<String, Object> params) { return success(dataService.getHistoryValue(params)); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -758,7 +758,7 @@ } @PostMapping("/demand/history") @Operation(summary = "负荷移植-实测需量,有功功率 历史") @Operation(summary = "负荷移植-实测需量有功功率历史") public CommonResult<PowerHistoryDTO> getPowerDemandHistory(@RequestBody PowerDemandHisReqDTO dto) { log.info("请求参数: {}", JSONObject.toJSONString(dto)); @@ -826,4 +826,67 @@ return success(result); } @PostMapping("/demand/history-list") @Operation(summary = "负荷移植-实测需量有功功率历史(多code)") public CommonResult<LinkedHashMap<String, List<Object[]>>> getPowerDemandHistoryList(@RequestBody PowerDemandHisReqDTO dto) { log.info("请求参数: {}", JSONObject.toJSONString(dto)); LinkedHashMap<String, List<Object[]>> result = new LinkedHashMap<>(); // 参数校验 if (CollectionUtils.isEmpty(dto.getCodeList())) { return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST, "codeList不能为空"); } if (StringUtils.isBlank(dto.getQueryType())) { return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST, "queryType不能为空"); } Calendar cal = Calendar.getInstance(); cal.set(Calendar.MILLISECOND, 0); cal.set(Calendar.SECOND, 0); Date endTime = dto.getEndTime() == null ? cal.getTime() : dto.getEndTime(); Date startTime = dto.getStartTime(); if (dto.getStartTime() == null) { cal.add(Calendar.DAY_OF_YEAR, -1); startTime = cal.getTime(); } for (String code : dto.getCodeList()) { PowerDemandEntity powerDemand = powerDemandService.getByCode(code); if (powerDemand == null) { log.info("未找到code对应的数据: {}", dto.getCode()); return success(new LinkedHashMap<>()); } String queryType = dto.getQueryType().toUpperCase(); String pointNo; switch (queryType.toUpperCase()) { case "D": pointNo = powerDemand.getCurDemand(); break; case "P": pointNo = powerDemand.getActivePower(); break; default: throw new IllegalArgumentException("不支持的queryType: " + queryType); } // 查询历史数据 ApiPointValueQueryDTO query = new ApiPointValueQueryDTO(); query.setPointNo(pointNo); query.setStart(startTime); query.setEnd(endTime); log.info("开始查询实测需量有功功率历史数据,测点: {}", pointNo); List<ApiPointValueDTO> chartData = dataPointApi.queryPointHistoryValue(query); List<Object[]> dataList = chartData.stream() .map(pv -> new Object[]{ DateUtils.format(pv.getT(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND), pv.getV() }) .collect(Collectors.toList()); result.put(code, dataList); } return success(result); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandHisReqDTO.java
@@ -5,6 +5,7 @@ import java.io.Serializable; import java.util.Date; import java.util.List; /** * @author dyk @@ -17,6 +18,8 @@ private String code; private List<String> codeList; private String queryType; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/DataService.java
@@ -33,4 +33,6 @@ List<PowerControlMainDTO> getPowerControlMainList(); List<PowerControlDetDTO> getPowerControlDetList(Map<String, Object> params); List<Object[]> getHistoryValue(Map<String, Object> params); } ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/DataServiceImpl.java
@@ -5,6 +5,7 @@ import com.iailab.framework.common.util.object.ConvertUtils; import com.iailab.module.ansteel.api.dao.*; import com.iailab.module.ansteel.api.dto.*; import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum; import com.iailab.module.ansteel.power.dao.*; import com.iailab.module.ansteel.power.entity.PowerCapacitorStatusEntity; import com.iailab.module.ansteel.power.entity.PowerControlDetEntity; @@ -12,6 +13,9 @@ import com.iailab.module.ansteel.power.entity.PowerNetFactorEntity; import com.iailab.module.ansteel.api.service.DataService; import com.iailab.module.ansteel.common.constant.CommonConstant; 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; import com.iailab.module.data.api.plan.dto.ApiPlanDataDTO; import com.iailab.module.data.api.point.DataPointApi; @@ -30,12 +34,16 @@ import java.util.*; import java.util.stream.Collectors; import static com.iailab.framework.common.pojo.CommonResult.success; @Slf4j @Service public class DataServiceImpl implements DataService { @Autowired private DataPointApi dataPointApi; @Autowired private IndItemApi indItemApi; @Autowired private McsApi mcsApi; @@ -105,9 +113,9 @@ @Override public List<MainProcessIndexDTO> getIndexList(Map<String, Object> params) { List<MainProcessIndexDTO> list = new ArrayList<>(); if("day".equals(params.get("type"))) { if ("day".equals(params.get("type"))) { list = ConvertUtils.sourceToTarget(mainProcessIndexDayDao.selectList(new QueryWrapper<>()), MainProcessIndexDTO.class); }else if("team".equals(params.get("type"))){ } else if ("team".equals(params.get("type"))) { list = ConvertUtils.sourceToTarget(mainProcessIndexTeamDao.selectList(new QueryWrapper<>()), MainProcessIndexDTO.class); } if (!CollectionUtils.isEmpty(list)) { @@ -180,9 +188,12 @@ PreDataSingleChartRespVO resultOld = mcsApi.getPreDataSingleChart(reqVO); PreDataChartRespVO result = ConvertUtils.sourceToTarget(resultOld, PreDataChartRespVO.class); PreDataViewDTO preDataView = ConvertUtils.sourceToTarget(resultOld.getDataView(), PreDataViewDTO.class); if(trendsDataH != null) { if (StringUtils.isNotBlank(trendsDataH)) { // 动态上限 ApiPointValueQueryDTO pointValueQueryDTO = new ApiPointValueQueryDTO(); pointValueQueryDTO.setPointNo(trendsDataH); pointValueQueryDTO.setStart(startTime); pointValueQueryDTO.setEnd(endTime); List<ApiPointValueDTO> trendsDataHList = ConvertUtils.sourceToTarget(dataPointApi.queryPointHistoryValue(pointValueQueryDTO), ApiPointValueDTO.class); List<Object[]> newList = new ArrayList<>(); trendsDataHList.forEach(item -> { @@ -193,9 +204,12 @@ }); preDataView.setTrendsDataH(newList); } if(trendsDataL != null) { if (StringUtils.isNotBlank(trendsDataL)) { // 动态下限 ApiPointValueQueryDTO pointValueQueryDTO = new ApiPointValueQueryDTO(); pointValueQueryDTO.setPointNo(trendsDataL); pointValueQueryDTO.setStart(startTime); pointValueQueryDTO.setEnd(endTime); List<ApiPointValueDTO> trendsDataLList = ConvertUtils.sourceToTarget(dataPointApi.queryPointHistoryValue(pointValueQueryDTO), ApiPointValueDTO.class); List<Object[]> newList = new ArrayList<>(); trendsDataLList.forEach(item -> { @@ -208,7 +222,6 @@ } preDataView.setPreData(resultOld.getDataView().getPreDataL()); result.setPreDataView(preDataView); return result; } @@ -244,7 +257,7 @@ } /** * 查询原始计划、修正计划数据 * 查询原始计划、修正计划数据 */ @Override public Map<String, Object> getPlanDataChart(PlanDataChartReqVO reqVO) { @@ -370,4 +383,64 @@ wrapper.orderByAsc("sort"); return ConvertUtils.sourceToTarget(powerControlDetDao.selectList(wrapper), PowerControlDetDTO.class); } @Override public List<Object[]> getHistoryValue(Map<String, Object> params) { List<Object[]> dataList = new ArrayList<>(); if (!params.containsKey("dataType") || !params.containsKey("dataNo")) { return dataList; } String dataType = params.get("dataType").toString(); String dataNo = params.get("dataNo").toString(); Date startTime = null; Date endTime = null; Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 0); if (!params.containsKey("endTime") || StringUtils.isBlank(params.get("endTime").toString())) { endTime = calendar.getTime(); }else { endTime = DateUtils.parse(params.get("endTime").toString(),DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); } if (!params.containsKey("startTime") || StringUtils.isBlank(params.get("startTime").toString())) { calendar.add(Calendar.DAY_OF_YEAR, -1); startTime = calendar.getTime(); }else { startTime = DateUtils.parse(params.get("startTime").toString(),DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); } switch (ProcessConfDataTypeEnum.getEumByCode(dataType)) { case DATAPOINT: ApiPointValueQueryDTO queryParams1 = new ApiPointValueQueryDTO(); queryParams1.setPointNo(dataNo); queryParams1.setStart(startTime); queryParams1.setEnd(endTime); List<com.iailab.module.data.api.point.dto.ApiPointValueDTO> pointHisValue = dataPointApi.queryPointHistoryValue(queryParams1); pointHisValue.forEach(item -> { Object[] values = new Object[2]; values[0] = DateUtils.format(item.getT(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); values[1] = new BigDecimal(item.getV()).setScale(3, BigDecimal.ROUND_HALF_UP); dataList.add(values); }); break; case IND: log.info("IND"); ApiIndItemQueryDTO queryParams2 = new ApiIndItemQueryDTO(); queryParams2.setItemNo(dataNo); queryParams2.setStart(startTime); queryParams2.setEnd(endTime); List<ApiIndItemValueDTO> indValues = indItemApi.queryIndItemHistoryValue(queryParams2); indValues.forEach(item -> { Object[] values = new Object[2]; values[0] = item.getDataTime(); values[1] = item.getDataValue(); dataList.add(values); }); break; default: break; } return dataList; } } ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java
@@ -14,6 +14,8 @@ List<CokingAnalyIndEntity> list(Map<String, Object> params); CokingAnalyIndEntity get(String analyType, String analyDate); void save(List<CokingAnalyIndEntity> entityList); void delete(String analyType, String analyDate); ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java
@@ -37,6 +37,21 @@ } @Override public CokingAnalyIndEntity get(String analyType, String analyDate) { QueryWrapper<CokingAnalyIndEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("analy_type", analyType) .eq("analy_date", analyDate) .orderByDesc("analy_date"); List<CokingAnalyIndEntity> list = cokingAnalyIndDao.selectList(queryWrapper); if (list != null && list.size() > 0) { return list.get(0); } else { return null; } } @Override public void save(List<CokingAnalyIndEntity> entityList) { cokingAnalyIndDao.insert(entityList); } @@ -47,8 +62,6 @@ queryWrapper.eq("analy_type", analyType) .eq("analy_date", analyDate); cokingAnalyIndDao.delete(queryWrapper); } @Override ansteel-biz/src/main/java/com/iailab/module/ansteel/common/enums/TraceProcessTypeEnum.java
对比新文件 @@ -0,0 +1,31 @@ package com.iailab.module.ansteel.common.enums; import lombok.AllArgsConstructor; import lombok.Getter; import org.apache.commons.lang3.StringUtils; @Getter @AllArgsConstructor public enum TraceProcessTypeEnum { BM("BM", "备煤工序"), LJ("LJ", "炼焦工序"), GXJ("GXJ", "干熄焦工序"), HC("HC", "化产工序"), UNKNOW("unkuow", "未知"); private String code; private String process; public static TraceProcessTypeEnum getEumByCode(String code) { if (StringUtils.isBlank(code)) { return UNKNOW; } for (TraceProcessTypeEnum statusEnum : TraceProcessTypeEnum.values()) { if (statusEnum.getCode().equals(code.trim().toUpperCase())) { return statusEnum; } } return UNKNOW; } } ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java
@@ -5,6 +5,7 @@ import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.ansteel.coking.service.*; import com.iailab.module.ansteel.common.constant.CommonConstant; import com.iailab.module.ansteel.common.enums.TraceProcessTypeEnum; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mdk.MdkApi; import org.slf4j.Logger; @@ -51,7 +52,7 @@ @Autowired private MdkApi mdkApi; private final static String process = "备煤工序"; private final static String process = TraceProcessTypeEnum.BM.getProcess(); private final static String reportName = "备煤工序异常溯源"; ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java
@@ -5,6 +5,7 @@ import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.ansteel.coking.service.*; import com.iailab.module.ansteel.common.constant.CommonConstant; import com.iailab.module.ansteel.common.enums.TraceProcessTypeEnum; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mdk.MdkApi; import org.slf4j.Logger; @@ -49,7 +50,7 @@ @Autowired private MdkApi mdkApi; private final static String process = "干熄焦工序"; private final static String process = TraceProcessTypeEnum.GXJ.getProcess(); private final static String reportName = "干熄焦工序异常溯源"; ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java
@@ -5,6 +5,7 @@ import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.ansteel.coking.service.*; import com.iailab.module.ansteel.common.constant.CommonConstant; import com.iailab.module.ansteel.common.enums.TraceProcessTypeEnum; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mdk.MdkApi; import org.slf4j.Logger; @@ -51,7 +52,7 @@ @Autowired private MdkApi mdkApi; private final static String process = "化产工序"; private final static String process = TraceProcessTypeEnum.HC.getProcess(); private final static String reportName = "化产工序异常溯源"; ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java
@@ -5,6 +5,7 @@ import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.ansteel.coking.service.*; import com.iailab.module.ansteel.common.constant.CommonConstant; import com.iailab.module.ansteel.common.enums.TraceProcessTypeEnum; import com.iailab.module.model.api.mdk.MdkApi; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,7 +48,7 @@ @Autowired private MdkApi mdkApi; private final static String process = "炼焦工序"; private final static String process = TraceProcessTypeEnum.LJ.getProcess(); private final static String reportName = "炼焦工序异常溯源"; ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java
@@ -43,66 +43,69 @@ //根据测点分组 Map<String, List<PeakValleyFlatEntity>> groupedByPointNo = list.stream() .collect(Collectors.groupingBy(PeakValleyFlatEntity::getPowerNo)); .collect(Collectors.groupingBy(PeakValleyFlatEntity::getPointNo)); groupedByPointNo.entrySet().stream().forEach(entry -> { //计算昨日的累积量 //计算昨日的峰/谷累积量 double value = getSumValue(entry.getValue(), 1, calendar); //计算昨日总电耗 calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.HOUR_OF_DAY, 0); Calendar cal = (Calendar) calendar.clone(); cal.set(Calendar.MILLISECOND, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.HOUR_OF_DAY, 0); Date endTime = calendar.getTime(); calendar.add(Calendar.DAY_OF_YEAR, -1); Date startTime = calendar.getTime(); double totalValue = getSumValueTotal(entry.getValue().get(0).getPowerNo(), startTime,endTime); cal.add(Calendar.DAY_OF_YEAR, -1); Date startTime = cal.getTime(); cal.add(Calendar.DAY_OF_YEAR, -29); Date monthStartTime = cal.getTime(); double totalValue = getSumValueTotal(entry.getValue().get(0).getPowerNo(), startTime, endTime); //下发昨日占比 ApiPointValueWriteDTO dto = new ApiPointValueWriteDTO(); dto.setPointNo(entry.getValue().get(0).getPointNo()); dto.setValue(value/totalValue*100); dataPointApi.writePointRealValue(dto); ApiPointValueWriteDTO percentDto = new ApiPointValueWriteDTO(); percentDto.setPointNo(entry.getValue().get(0).getPointNo()); double percent = totalValue == 0 ? 0 : value / totalValue * 100; percentDto.setValue(percent); dataPointApi.writePointRealValue(percentDto); //计算前三十日累积量 double value30 = 0; for (int i = 1; i < 31; i++) { //计算前三十日累积量 value30 = value30 + getSumValue(entry.getValue(), i, calendar); } //下发昨日峰/谷累积量 ApiPointValueWriteDTO totalDto = new ApiPointValueWriteDTO(); percentDto.setPointNo(entry.getValue().get(0).getPointNoTotal()); percentDto.setValue(value); dataPointApi.writePointRealValue(totalDto); //计算前三十日峰/谷累积量 double valueMonth = getSumValueTotal(entry.getValue().get(0).getPointNoTotal(), monthStartTime, endTime); //计算前三十日总电耗 calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.add(Calendar.DAY_OF_YEAR, -30); Date startTimeMonth = calendar.getTime(); double totalValueMonth = getSumValueTotal(entry.getValue().get(0).getPowerNo(), startTimeMonth,endTime); double totalValueMonth = getSumValueTotal(entry.getValue().get(0).getPowerNo(), monthStartTime, endTime); //下发前三十日占比 ApiPointValueWriteDTO monthDto = new ApiPointValueWriteDTO(); monthDto.setPointNo(entry.getValue().get(0).getPointNoMonth()); monthDto.setValue(value30/totalValueMonth*100); double percentMonth = totalValueMonth == 0 ? 0 : valueMonth / totalValueMonth * 100; monthDto.setValue(percentMonth); dataPointApi.writePointRealValue(monthDto); }); } catch (Exception ex) { logger.error("runPeakValleyFlatTask运行异常"); ex.printStackTrace(); logger.error("runPeakValleyFlatTask运行异常", ex); } } private Date getTime(String timeStr, int ago, Calendar calendar) { Calendar cal = (Calendar) calendar.clone(); String[] timeSplit = timeStr.split(":"); if (timeSplit.length != 2) { throw new IllegalArgumentException("时间配置格式不合法"); } //根据配置获取startTime、endTime calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(timeSplit[0])); calendar.set(Calendar.MINUTE, Integer.parseInt(timeSplit[1])); calendar.add(Calendar.DAY_OF_YEAR, -ago); return calendar.getTime(); cal.set(Calendar.MILLISECOND, 0); cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(timeSplit[0])); cal.set(Calendar.MINUTE, Integer.parseInt(timeSplit[1])); cal.add(Calendar.DAY_OF_YEAR, -ago); return cal.getTime(); } private List<ApiPointValueDTO> fillMissingData(List<ApiPointValueDTO> valueList, @@ -167,9 +170,14 @@ dto.setPointNo(entity.getPowerNo()); dto.setStart(startTime); dto.setEnd(endTime); logger.info("开始查询,测点:" + entity.getPowerNo() + "startTime:" + startTime + "endTime:" + endTime); List<ApiPointValueDTO> valueList; //查找数据 List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(dto); try { valueList = dataPointApi.queryPointHistoryValue(dto); } catch (Exception e) { throw new RuntimeException("查询测点异常"); } //补全数据 valueList = fillMissingData(valueList, startTime, endTime); //累加 @@ -190,6 +198,6 @@ //补全数据 valueList = fillMissingData(valueList, startTime, endTime); //累加 return valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum()/ 60; return valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum() / 60; } } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PeakValleyFlatEntity.java
@@ -41,6 +41,10 @@ */ private String pointNoMonth; /** * 下发测点编码 */ private String pointNoTotal; /** * 功率测点编码 */ private String powerNo; ansteel-biz/src/main/resources/application.yaml
@@ -178,6 +178,7 @@ - t_power_demand - t_power_adjusted_factor - t_power_net_dropdown - t_peak_valley_flat - t_coking_overview_ind swagger: title: 鞍钢鲅鱼圈能源管控系统 doc/鞍钢数据接口文档_master.docBinary files differ