From fafbe018ce52b61302e1dec9f06dac5bcad757b1 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期一, 16 六月 2025 12:51:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/service/impl/PlantConfServiceImpl.java |   65 ++++++++++++++++++++++++++++++++
 1 files changed, 65 insertions(+), 0 deletions(-)

diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/service/impl/PlantConfServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/service/impl/PlantConfServiceImpl.java
index b64d21c..6e388bb 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/service/impl/PlantConfServiceImpl.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/service/impl/PlantConfServiceImpl.java
@@ -1,16 +1,26 @@
 package com.iailab.module.ansteel.plant.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum;
 import com.iailab.module.ansteel.plant.dao.PlantConfDao;
 import com.iailab.module.ansteel.plant.entity.PlantConfEntity;
 import com.iailab.module.ansteel.plant.service.PlantConfService;
+import com.iailab.module.data.api.arc.ArcDataApi;
+import com.iailab.module.data.api.arc.dto.ApiArcDataDTO;
+import com.iailab.module.data.api.ind.IndItemApi;
+import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO;
+import com.iailab.module.data.api.point.DataPointApi;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author PanZhibao
@@ -23,6 +33,14 @@
 
     @Resource
     private PlantConfDao plantConfDao;
+    @Resource
+    private DataPointApi dataPointApi;
+    @Resource
+    private IndItemApi indItemApi;
+    @Resource
+    private ArcDataApi arcDataApi;
+
+    private BigDecimal badValue = new BigDecimal(-2);
 
     @Override
     public List<PlantConfEntity> list(Map<String, Object> params) {
@@ -32,4 +50,51 @@
         queryWrapper.eq(StringUtils.isNotBlank(businessType), "business_type", businessType);
         return plantConfDao.selectList(queryWrapper);
     }
+
+    @Override
+    public Map<String, BigDecimal> getPlantData(String businessType) {
+        QueryWrapper<PlantConfEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("business_type",businessType);
+        List<PlantConfEntity> plantConfList = plantConfDao.selectList(queryWrapper);
+        // 筛选DATAPOINT一次性查询出全部
+        List<String> pointNos = plantConfList.stream().filter(e -> e.getDataType().equals(ProcessConfDataTypeEnum.DATAPOINT.getCode())).map(PlantConfEntity::getDataNo).collect(Collectors.toList());
+        Map<String, Object> pointValues = new HashMap<>();
+        if (!CollectionUtils.isEmpty(pointNos)) {
+            pointValues = dataPointApi.queryPointsRealValue(pointNos);
+        }
+        Map<String, BigDecimal> result = new HashMap<>(plantConfList.size());
+        for (PlantConfEntity plantConf : plantConfList) {
+            String dataNo = plantConf.getDataNo();
+            String dataType = plantConf.getDataType();
+            switch (ProcessConfDataTypeEnum.getEumByCode(dataType)) {
+                case DATAPOINT:
+                    if (pointValues.containsKey(dataNo)) {
+                        result.put(dataNo,new BigDecimal(pointValues.get(dataNo).toString()));
+                    }else {
+                        result.put(dataNo,badValue);
+                    }
+                    break;
+                case IND:
+                    List<ApiIndItemValueDTO> indValues = indItemApi.queryIndItemDefaultValue(dataNo);
+                    if (!CollectionUtils.isEmpty(indValues)) {
+                        result.put(dataNo,new BigDecimal(indValues.get(0).getDataValue().toString()));
+                    }else {
+                        result.put(dataNo,badValue);
+                    }
+                    break;
+                case ARC:
+                    ApiArcDataDTO apiArcDataDTO = arcDataApi.queryArcLastValue(dataNo);
+                    if (apiArcDataDTO != null) {
+                        result.put(dataNo,apiArcDataDTO.getArcValue());
+                    }else {
+                        result.put(dataNo,badValue);
+                    }
+                    break;
+                default:
+                    result.put(dataNo,badValue);
+                    break;
+            }
+        }
+        return result;
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3