鞍钢鲅鱼圈能源管控系统后端代码
liriming
7 天以前 2cf82d64aa7ac3b2837703a7afadcc811b03170e
Merge remote-tracking branch 'origin/master'
已修改16个文件
已添加1个文件
361 ■■■■ 文件已修改
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/CokingController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandHisReqDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/DataService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/DataServiceImpl.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingAnalyIndService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingAnalyIndServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/common/enums/TraceProcessTypeEnum.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PeakValleyFlatEntity.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/resources/application.yaml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/鞍钢数据接口文档_master.doc 补丁 | 查看 | 原始文档 | blame | 历史
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.doc
Binary files differ