鞍钢鲅鱼圈能源管控系统后端代码
dengzedong
20 小时以前 95fa8f7f6e3dbc4f13c0a9b15515f4040fa05f03
焦化概况 能流图指标数据
已添加5个文件
已修改3个文件
333 ■■■■■ 文件已修改
ansteel-biz/db/mysql.sql 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/CokingController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dao/CokingOverviewIndDao.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingOverviewIndDTO.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingOverviewIndEntity.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingOverviewIndService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingOverviewIndServiceImpl.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingOverviewTask.java 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/db/mysql.sql
@@ -673,4 +673,18 @@
    `sort`      varchar(50) DEFAULT NULL COMMENT '排序',
    PRIMARY KEY (`id`),
    UNIQUE key uk_code (code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='调整后的功率因数与无功倒送量';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='调整后的功率因数与无功倒送量';
CREATE TABLE `t_coking_overview_ind` (
                                         `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
                                         `rel_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关联ID',
                                         `process_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '工序类型',
                                         `clock` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '查询时间',
                                         `ind_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标编码',
                                         `ind_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标名称',
                                         `ind_unit` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标单位',
                                         `ind_value` decimal(20,4) DEFAULT NULL COMMENT '指标值',
                                         `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='焦化工序概况指标数据结果';
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/CokingController.java
@@ -63,6 +63,8 @@
    @Autowired
    private CokingOverviewService cokingOverviewService;
    @Autowired
    private CokingOverviewIndService cokingOverviewIndService;
    @Autowired
    private CokingTraceSuggestService cokingTraceSuggestService;
@@ -159,12 +161,19 @@
    @GetMapping("/overview/list")
    @Operation(summary = "各工序-概况数据")
    @Operation(summary = "各工序-概况-整体数据")
    public CommonResult<Map<String,List<CokingOverviewDTO>>> getOverviewList(@RequestParam Map<String, Object> params) {
        Map<String,List<CokingOverviewDTO>> result = cokingOverviewService.list(params);
        return success(result);
    }
    @GetMapping("/overview/indList")
    @Operation(summary = "各工序-概况-能流图指标数据")
    public CommonResult<List<CokingOverviewIndEntity>> getOverviewIndList(@RequestParam Map<String, Object> params) {
        List<CokingOverviewIndEntity> list = cokingOverviewIndService.list(params);
        return success(list);
    }
    @GetMapping("/overview/abnormal-data")
    @Operation(summary = "各工序-异常数据")
    public CommonResult<List<CokingTraceDataDTO>> getAbnormalData(@RequestParam Map<String, Object> params) {
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dao/CokingOverviewIndDao.java
对比新文件
@@ -0,0 +1,14 @@
package com.iailab.module.ansteel.coking.dao;
import com.iailab.framework.common.dao.BaseDao;
import com.iailab.module.ansteel.coking.entity.CokingOverviewIndEntity;
import org.apache.ibatis.annotations.Mapper;
/**
 * @description:
 * @author: dzd
 * @date: 2025/4/26 10:54
 **/
@Mapper
public interface CokingOverviewIndDao extends BaseDao<CokingOverviewIndEntity> {
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingOverviewIndDTO.java
对比新文件
@@ -0,0 +1,61 @@
package com.iailab.module.ansteel.coking.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * @description: 焦化工序概况指标数据结果
 * @author: dzd
 * @date: 2025/4/26 10:49
 **/
@Data
@TableName("t_coking_overview_ind")
public class CokingOverviewIndDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;
    /**
     * 关联ID
     */
    private String relId;
    /**
     * 工序类型
     */
    private String processType;
    /**
     * 查询时间
     */
    private String clock;
    /**
     * 编码
     */
    private String indCode;
    /**
     * 名称
     */
    private String indName;
    /**
     * 值
     */
    private String indValue;
    /**
     * 单位
     */
    private String indUnit;
    /**
     * 创建时间
     */
    private Date createDate;
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingOverviewIndEntity.java
对比新文件
@@ -0,0 +1,62 @@
package com.iailab.module.ansteel.coking.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * @description: 焦化工序概况指标数据结果
 * @author: dzd
 * @date: 2025/4/26 10:49
 **/
@Data
@TableName("t_coking_overview_ind")
public class CokingOverviewIndEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;
    /**
     * 关联ID
     */
    private String relId;
    /**
     * 工序类型
     */
    private String processType;
    /**
     * 查询时间
     */
    private String clock;
    /**
     * 编码
     */
    private String indCode;
    /**
     * 名称
     */
    private String indName;
    /**
     * 值
     */
    private BigDecimal indValue;
    /**
     * 单位
     */
    private String indUnit;
    /**
     * 创建时间
     */
    private Date createDate;
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/CokingOverviewIndService.java
对比新文件
@@ -0,0 +1,20 @@
package com.iailab.module.ansteel.coking.service;
import com.iailab.module.ansteel.coking.entity.CokingOverviewIndEntity;
import java.util.List;
import java.util.Map;
/**
 * @description:
 * @author: dzd
 * @date: 2025/4/26 10:52
 **/
public interface CokingOverviewIndService {
    List<CokingOverviewIndEntity> list(Map<String, Object> params);
    void save(List<CokingOverviewIndEntity> entityList);
    void deleteByProcessType(String processType, String clock);
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/service/impl/CokingOverviewIndServiceImpl.java
对比新文件
@@ -0,0 +1,57 @@
package com.iailab.module.ansteel.coking.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iailab.framework.common.util.date.DateUtils;
import com.iailab.module.ansteel.coking.dao.CokingOverviewIndDao;
import com.iailab.module.ansteel.coking.entity.CokingOverviewEntity;
import com.iailab.module.ansteel.coking.entity.CokingOverviewIndEntity;
import com.iailab.module.ansteel.coking.service.CokingOverviewIndService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
@Slf4j
@Service
public class CokingOverviewIndServiceImpl implements CokingOverviewIndService {
    @Resource
    private CokingOverviewIndDao cokingOverviewIndDao;
    @Override
    public List<CokingOverviewIndEntity> list(Map<String, Object> params) {
        String processType = (String) params.get("processType");
        if (StringUtils.isBlank(processType)) {
            return new ArrayList<>();
        }
        String clock = (String) params.get("clock");
        if (StringUtils.isBlank(clock)) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            clock = DateUtils.format(calendar.getTime(), "yyyy-MM-dd");
        }
        QueryWrapper<CokingOverviewIndEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("clock",clock);
        queryWrapper.eq("process_type",processType);
        return cokingOverviewIndDao.selectList(queryWrapper);
    }
    @Override
    public void save(List<CokingOverviewIndEntity> entityList) {
        cokingOverviewIndDao.insert(entityList);
    }
    @Override
    public void deleteByProcessType(String processType, String clock) {
        QueryWrapper<CokingOverviewIndEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("process_type", processType);
        queryWrapper.eq("clock", clock);
        cokingOverviewIndDao.delete(queryWrapper);
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingOverviewTask.java
@@ -20,6 +20,7 @@
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -39,6 +40,8 @@
    private CokingProcessConfService cokingProcessConfService;
    @Resource
    private CokingOverviewService cokingOverviewService;
    @Resource
    private CokingOverviewIndService cokingOverviewIndService;
    @Resource
    private DataPointApi dataPointApi;
    @Resource
@@ -82,6 +85,11 @@
                reportEntity.setCreateDate(new Date());
                cokingTraceReportService.save(reportEntity);
                // 清理旧数据
                cokingOverviewService.deleteByProcessType(processType, clock);
                cokingTraceDataService.deleteByExObj(processType+"_AD", clock);
                cokingOverviewIndService.deleteByProcessType(processType, clock);
                // 整体情况
                // 筛选info_type = 2,按照子工序类型分组
                Map<String, List<CokingProcessConfEntity>> processTypeMap = list.stream().filter(e -> e.getInfoType().equals("2")).collect(Collectors.groupingBy(CokingProcessConfEntity::getExt2));
@@ -100,26 +108,9 @@
                            logger.info("PointNo is Empty");
                            continue;
                        }
                        Double value = null;
                        switch (ProcessConfDataTypeEnum.getEumByCode(conf.getDataType())) {
                            case DATAPOINT:
                                List<String> points = new ArrayList<>();
                                points.add(conf.getPointNo());
                                Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points);
                                value = Double.valueOf(pointsRealValue.get(conf.getPointNo()).toString());
                                break;
                            case IND:
                                List<ApiIndItemValueDTO> indValues = indItemApi.queryIndItemDefaultValue(conf.getPointNo());
                                if (!CollectionUtils.isEmpty(indValues)) {
                                    value = Double.valueOf(indValues.get(indValues.size() - 1).getDataValue().toString());
                                }
                                break;
                            case MODEL:
                                break;
                            default:
                                break;
                        }
                        Double value = getConfValue(conf);
                        values.put(conf.getExt1(),value);
                        // 异常数据处理
@@ -141,7 +132,7 @@
                            ctd.setRelId(relId);
                            ctd.setProcess(ProcessTypeEnum.getEumByCode(conf.getIndType()).getReportName());
                            ctd.setClock(clock);
                            ctd.setExObj(conf.getIndType()+"_AD");
                            ctd.setExObj(processType+"_AD");
                            ctd.setExTime(calendar.getTime());
                            ctd.setExType(content);
                            ctd.setCreateDate(new Date());
@@ -157,17 +148,70 @@
                    overviewEntity.setSubProcessType(entry.getKey());
                    overviewEntity.setClock(clock);
                    result.add(overviewEntity);
                    // 清理旧数据
                    cokingOverviewService.deleteByProcessType(processType, clock);
                    cokingTraceDataService.deleteByExObj(processType, clock);
                }
                cokingOverviewService.insert(result);
                cokingTraceDataService.insertList(exDatalist);
                // 能流图指标数据
                // 筛选info_type = 1
                List<CokingProcessConfEntity> indList = list.stream().filter(e -> e.getInfoType().equals("1")).collect(Collectors.toList());
                if (CollectionUtils.isEmpty(indList)) {
                    return;
                }
                List<CokingOverviewIndEntity> overviewIndEntities = new ArrayList<>(indList.size());
                for (CokingProcessConfEntity conf : indList) {
                    if (StringUtils.isBlank(conf.getDataType())) {
                        logger.info("DataType is Empty");
                        continue;
                    }
                    if (StringUtils.isBlank(conf.getPointNo())) {
                        logger.info("PointNo is Empty");
                        continue;
                    }
                    Double value = getConfValue(conf);
                    CokingOverviewIndEntity entity = new CokingOverviewIndEntity();
                    entity.setId(UUID.randomUUID().toString());
                    entity.setRelId(relId);
                    entity.setProcessType(processType);
                    entity.setClock(clock);
                    entity.setIndCode(conf.getIndCode());
                    entity.setIndName(conf.getIndName());
                    entity.setIndUnit(conf.getIndUnit());
                    if (value != null) {
                        entity.setIndValue(BigDecimal.valueOf(value));
                    }
                    entity.setCreateDate(new Date());
                    overviewIndEntities.add(entity);
                }
                cokingOverviewIndService.save(overviewIndEntities);
            }
        } catch (Exception ex) {
            logger.error("runCokingOverviewTask运行异常",ex);
        }
        logger.info("runCokingOverviewTask运行完成");
    }
    private Double getConfValue(CokingProcessConfEntity conf) {
        Double value = null;
        switch (ProcessConfDataTypeEnum.getEumByCode(conf.getDataType())) {
            case DATAPOINT:
                List<String> points = new ArrayList<>();
                points.add(conf.getPointNo());
                Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points);
                value = Double.valueOf(pointsRealValue.get(conf.getPointNo()).toString());
                break;
            case IND:
                List<ApiIndItemValueDTO> indValues = indItemApi.queryIndItemDefaultValue(conf.getPointNo());
                if (!CollectionUtils.isEmpty(indValues)) {
                    value = Double.valueOf(indValues.get(indValues.size() - 1).getDataValue().toString());
                }
                break;
            case MODEL:
                break;
            default:
                break;
        }
        return value;
    }
}