鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
2025-05-30 86a915258ab3b0cad0fac4615c0b5cd83f7aa2f9
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -11,6 +11,7 @@
import com.iailab.module.ansteel.api.vo.PowerCapacitorHisPageReqVO;
import com.iailab.module.ansteel.api.vo.PowerMaxDemandMainPageReqVO;
import com.iailab.module.ansteel.common.utils.DecimalUtil;
import com.iailab.module.ansteel.common.utils.PowerUtil;
import com.iailab.module.ansteel.power.entity.*;
import com.iailab.module.ansteel.power.service.*;
import com.iailab.module.data.api.point.DataPointApi;
@@ -232,6 +233,32 @@
                    powerNetFactorDTO.setQstatus(1);
                }
            }
            // 日功率因数
            if (StringUtils.isNotBlank(entity.getPDay()) && StringUtils.isNotBlank(entity.getQDay())) {
                List<String> pointNos = new ArrayList<>();
                pointNos.add(entity.getPDay());
                pointNos.add(entity.getQDay());
                Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(pointNos);
                if (!CollectionUtils.isEmpty(pointsRealValue)) {
                    double pValue = new BigDecimal(pointsRealValue.get(entity.getPDay()).toString()).doubleValue();
                    double qValue = new BigDecimal(pointsRealValue.get(entity.getQDay()).toString()).doubleValue();
                    powerNetFactorDTO.setDayCos(new BigDecimal(PowerUtil.calculateCos(pValue, qValue)).setScale(2, BigDecimal.ROUND_HALF_UP)) ;
                }
            }
            // 月功率因数
            if (StringUtils.isNotBlank(entity.getPMon()) && StringUtils.isNotBlank(entity.getQMon())) {
                List<String> pointNos = new ArrayList<>();
                pointNos.add(entity.getPMon());
                pointNos.add(entity.getQMon());
                Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(pointNos);
                if (!CollectionUtils.isEmpty(pointsRealValue)) {
                    double pValue = new BigDecimal(pointsRealValue.get(entity.getPMon()).toString()).doubleValue();
                    double qValue = new BigDecimal(pointsRealValue.get(entity.getQMon()).toString()).doubleValue();
                    powerNetFactorDTO.setMonthCos(new BigDecimal(PowerUtil.calculateCos(pValue, qValue)).setScale(2, BigDecimal.ROUND_HALF_UP)) ;
                }
            }
            result.add(powerNetFactorDTO);
        }
        return success(result);
@@ -335,6 +362,10 @@
        }
        for (PowerGenStatusEntity entity : list) {
            PowerGenStatusDTO dto = new PowerGenStatusDTO();
            dto.setId(entity.getId());
            dto.setName(entity.getName());
            dto.setSort(entity.getSort());
            List<String> points = new ArrayList<>();
            if (StringUtils.isNotBlank(entity.getCurP())) {
                points.add(entity.getCurP());
@@ -342,13 +373,19 @@
            if (StringUtils.isNotBlank(entity.getCurQ())) {
                points.add(entity.getCurQ());
            }
            if (StringUtils.isNotBlank(entity.getCurCos())) {
                points.add(entity.getCurCos());
            }
            if (!CollectionUtils.isEmpty(points)) {
                Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points);
                if (pointsRealValue.get(dto.getCurP()) != null) {
                    dto.setCurP(new BigDecimal(pointsRealValue.get(dto.getCurP()).toString()));
                if (pointsRealValue.get(entity.getCurP()) != null) {
                    dto.setCurP(new BigDecimal(pointsRealValue.get(entity.getCurP()).toString()));
                }
                if (pointsRealValue.get(dto.getCurQ()) != null) {
                    dto.setCurQ(new BigDecimal(pointsRealValue.get(dto.getCurQ()).toString()));
                if (pointsRealValue.get(entity.getCurQ()) != null) {
                    dto.setCurQ(new BigDecimal(pointsRealValue.get(entity.getCurQ()).toString()));
                }
                if (pointsRealValue.get(entity.getCurCos()) != null) {
                    dto.setCurCos(new BigDecimal(pointsRealValue.get(entity.getCurCos()).toString()));
                }
            }
@@ -477,6 +514,8 @@
                onCount ++;
            }
            dto.setOnCount(onCount);
            String remark = String.format("共%d台,在投%d台", DecimalUtil.toBigDecimal(entity.getMainCount()).intValue(), onCount);
            dto.setRemark(remark);
            result.add(dto);
        }
        return success(result);
@@ -634,7 +673,7 @@
            }
            if (!StringUtils.isEmpty(entity.getMaxDemand())) {
                ApiPointValueQueryDTO apiPointValueQueryDTO = new ApiPointValueQueryDTO();
                /*ApiPointValueQueryDTO apiPointValueQueryDTO = new ApiPointValueQueryDTO();
                apiPointValueQueryDTO.setStart(start);
                apiPointValueQueryDTO.setEnd(end);
                apiPointValueQueryDTO.setPointNo(entity.getMaxDemand());
@@ -642,6 +681,11 @@
                if (maxValue != null) {
                    demandDTO.setMaxDemand(new BigDecimal(maxValue.get(VALUE).toString()));
                    demandDTO.setOccurTime(DateUtils.parse( maxValue.get(TIME).toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
                }*/
                PowerMaxdemandMainEntity maxdemandMainEntity = powerMaxDemandMainService.getMonthMax(entity.getCode(), start);
                if (maxdemandMainEntity != null) {
                    demandDTO.setMaxDemand(maxdemandMainEntity.getMaxDemand());
                    demandDTO.setOccurTime(maxdemandMainEntity.getOccurTime());
                }
            }
            result.add(demandDTO);
@@ -882,16 +926,10 @@
        calendar0.set(Calendar.MILLISECOND, 0);
        calendar0.set(Calendar.SECOND, 0);
        Date end0 = dto.getEndTime() == null ? calendar0.getTime() : dto.getEndTime();
        calendar0.add(Calendar.MINUTE, -1440);
        calendar0.set(Calendar.MINUTE, 0);
        calendar0.set(Calendar.HOUR_OF_DAY, 0);
        Date start0 = dto.getStartTime() == null ? calendar0.getTime() : dto.getStartTime();
        Calendar calendar1 = Calendar.getInstance();
        calendar1.set(Calendar.DAY_OF_MONTH, 1);
        calendar1.set(Calendar.HOUR_OF_DAY, 0);
        calendar1.set(Calendar.MINUTE, 0);
        calendar1.set(Calendar.SECOND, 0);
        calendar1.set(Calendar.MILLISECOND, 0);
        Date start1 = calendar1.getTime();
        List<String> categories = DateUtils.getTimeScale(start0, end0, 60);
        for (String nodeCode : nodeCodeList) {
@@ -932,16 +970,18 @@
            apiPointValueQueryDTO.setStart(start0);
            List<ApiPointValueDTO> chartData = dataPointApi.queryPointHistoryValue(apiPointValueQueryDTO);
            List<Object[]> dataList = new ArrayList<>();
            List<Double> valueList = new ArrayList<>();
            for (ApiPointValueDTO pv : chartData) {
                Object[] data = new Object[2];
                data[0] = DateUtils.format(pv.getT(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
                data[1] = pv.getV();
                dataList.add(data);
                valueList.add(pv.getV());
            }
            powerHistoryDTO.setDataList(dataList);
            //查询月最大最小值
            ApiPointValueQueryDTO apiPointValueQueryDTO1 = new ApiPointValueQueryDTO();
            /*ApiPointValueQueryDTO apiPointValueQueryDTO1 = new ApiPointValueQueryDTO();
            apiPointValueQueryDTO1.setStart(start1);
            apiPointValueQueryDTO1.setEnd(new Date());
            apiPointValueQueryDTO1.setPointNo(pointNo);
@@ -952,7 +992,28 @@
            }
            if (minV != null && minV.containsKey(pointNo)) {
                powerHistoryDTO.setMin(new BigDecimal(minV.get(pointNo).toString()));
            }*/
            double fsl = 0;
            double max = 0;
            double min = 0;
            double avg = 0;
            if (!CollectionUtils.isEmpty(valueList)) {
                max = valueList.stream().mapToDouble(Double::doubleValue).max().getAsDouble();
                min = valueList.stream().mapToDouble(Double::doubleValue).min().getAsDouble();
                avg = valueList.stream().mapToDouble(Double::doubleValue).average().getAsDouble();
                for (Double val : valueList) {
                    if (val < 0) {
                        fsl += val;
                    }
                }
            }
            powerHistoryDTO.setFsl(new BigDecimal(fsl).setScale(2, BigDecimal.ROUND_HALF_UP));
            powerHistoryDTO.setMax(new BigDecimal(max).setScale(2, BigDecimal.ROUND_HALF_UP));
            powerHistoryDTO.setMin(new BigDecimal(min).setScale(2, BigDecimal.ROUND_HALF_UP));
            powerHistoryDTO.setAvg(new BigDecimal(avg).setScale(2, BigDecimal.ROUND_HALF_UP));
            result.put(nodeCode, powerHistoryDTO);
        }
        return success(result);