ansteel-biz/db/mysql.sql
@@ -949,6 +949,7 @@ -- ---------------------------- -- 135机组数据配置表 -- ---------------------------- DROP TABLE IF EXISTS `t_plant_conf`; CREATE TABLE `t_plant_conf` ( `id` varchar(36) NOT NULL COMMENT 'id', @@ -969,4 +970,26 @@ `sort` int NULL DEFAULT NULL COMMENT '排序', PRIMARY KEY (`id`), KEY `idx_business_type` (`business_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='135机组数据配置表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='135机组数据配置表'; -- ---------------------------- -- xiz135机组指标数据配置表 -- ---------------------------- DROP TABLE IF EXISTS `t_plant_index_conf`; CREATE TABLE `t_plant_index_conf` ( `id` varchar(36) NOT NULL COMMENT 'id', `business_type` varchar(20) DEFAULT NULL COMMENT '业务类别', `business_desc` varchar(20) DEFAULT NULL COMMENT '业务描述', `ind_code` varchar(20) DEFAULT NULL COMMENT '指标编码', `ind_name` varchar(20) DEFAULT NULL COMMENT '指标名称', `ind_unit` varchar(20) DEFAULT NULL COMMENT '指标单位', `ind_avg` varchar(20) DEFAULT NULL COMMENT '历史平均', `ind_theory` varchar(20) DEFAULT NULL COMMENT '理论值', `ind_optimal` varchar(20) DEFAULT NULL COMMENT '最优值', `ind_real` varchar(20) DEFAULT NULL COMMENT '实时值', `ind_deviation_value` varchar(20) DEFAULT NULL COMMENT '偏差值', `ind_deviation_rate` varchar(20) DEFAULT NULL COMMENT '偏差率', `ind_previous` varchar(20) DEFAULT NULL COMMENT '上班数据', `sort` int DEFAULT NULL COMMENT '排序', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='135机组指标数据配置表'; ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PlantConfController.java
文件已删除 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PlantController.java
对比新文件 @@ -0,0 +1,51 @@ package com.iailab.module.ansteel.api.controller.admin; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.module.ansteel.plant.service.PlantConfService; import com.iailab.module.ansteel.plant.service.PlantIndexConfService; import com.iailab.module.ansteel.plant.vo.PlantDataVO; import com.iailab.module.ansteel.plant.vo.PlantIndexDataVO; import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.util.List; import java.util.Map; import static com.iailab.framework.common.pojo.CommonResult.success; /** * @author PanZhibao * @Description * @createTime 2025年06月16日 */ @Slf4j @RestController @RequestMapping("/ansteel/api/plant") public class PlantController { @Autowired private PlantConfService plantConfService; @Autowired private PlantIndexConfService plantIndexConfService; @GetMapping("/data") @Operation(summary = "135机组数据") public CommonResult<List<PlantDataVO>> getPlantData(@RequestParam("businessType") String businessType) { List<PlantDataVO> result = plantConfService.getPlantData(businessType); return success(result); } @GetMapping("/ind-data") @Operation(summary = "135机组指标数据") public CommonResult<List<PlantIndexDataVO>> getPlantIndexData(@RequestParam("businessType") String businessType) { List<PlantIndexDataVO> result = plantIndexConfService.getPlantIndexData(businessType); return success(result); } } ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/dao/PlantIndexConfDao.java
对比新文件 @@ -0,0 +1,14 @@ package com.iailab.module.ansteel.plant.dao; import com.iailab.framework.common.dao.BaseDao; import com.iailab.module.ansteel.plant.entity.PlantIndexConfEntity; import org.apache.ibatis.annotations.Mapper; /** * @description: * @author: dzd * @date: 2025/6/16 13:59 **/ @Mapper public interface PlantIndexConfDao extends BaseDao<PlantIndexConfEntity> { } ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/entity/PlantIndexConfEntity.java
对比新文件 @@ -0,0 +1,48 @@ package com.iailab.module.ansteel.plant.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; /** * @description: * @author: dzd * @date: 2025/6/16 13:59 **/ @Data @TableName("t_plant_index_conf") public class PlantIndexConfEntity implements Serializable { private static final long serialVersionUID = 1L; /** * id */ @TableId private String id; private String businessType; private String indCode; private String indName; private String indUnit; private String indAvg; private String indTheory; private String indOptimal; private String indReal; private String indDeviationValue; private String indDeviationRate; private String indPrevious; private Integer sort; } ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/service/PlantConfService.java
@@ -1,8 +1,8 @@ package com.iailab.module.ansteel.plant.service; import com.iailab.module.ansteel.plant.entity.PlantConfEntity; import com.iailab.module.ansteel.plant.vo.PlantDataVO; import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -15,5 +15,5 @@ List<PlantConfEntity> list(Map<String, Object> params); Map<String, BigDecimal> getPlantData(String businessType); List<PlantDataVO> getPlantData(String businessType); } ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/service/PlantIndexConfService.java
对比新文件 @@ -0,0 +1,18 @@ package com.iailab.module.ansteel.plant.service; import com.iailab.module.ansteel.plant.entity.PlantConfEntity; import com.iailab.module.ansteel.plant.vo.PlantIndexDataVO; import java.math.BigDecimal; import java.util.List; import java.util.Map; /** * @description: * @author: dzd * @date: 2025/6/16 13:56 **/ public interface PlantIndexConfService { List<PlantIndexDataVO> getPlantIndexData(String businessType); } ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/service/impl/PlantConfServiceImpl.java
@@ -5,6 +5,7 @@ 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.ansteel.plant.vo.PlantDataVO; 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; @@ -17,6 +18,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -40,7 +42,7 @@ @Resource private ArcDataApi arcDataApi; private BigDecimal badValue = new BigDecimal(-2); private final BigDecimal badValue = new BigDecimal(-2); @Override public List<PlantConfEntity> list(Map<String, Object> params) { @@ -52,7 +54,7 @@ } @Override public Map<String, BigDecimal> getPlantData(String businessType) { public List<PlantDataVO> getPlantData(String businessType) { QueryWrapper<PlantConfEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("business_type",businessType); List<PlantConfEntity> plantConfList = plantConfDao.selectList(queryWrapper); @@ -62,38 +64,44 @@ if (!CollectionUtils.isEmpty(pointNos)) { pointValues = dataPointApi.queryPointsRealValue(pointNos); } Map<String, BigDecimal> result = new HashMap<>(plantConfList.size()); List<PlantDataVO> result = new ArrayList<>(plantConfList.size()); for (PlantConfEntity plantConf : plantConfList) { String dataNo = plantConf.getDataNo(); String dataType = plantConf.getDataType(); PlantDataVO plantData = new PlantDataVO(); plantData.setCode(plantConf.getIndCode()); plantData.setName(plantConf.getIndName()); plantData.setUnit(plantConf.getIndUnit()); plantData.setSort(plantConf.getSort()); switch (ProcessConfDataTypeEnum.getEumByCode(dataType)) { case DATAPOINT: if (pointValues.containsKey(dataNo)) { result.put(dataNo,new BigDecimal(pointValues.get(dataNo).toString())); plantData.setValue(new BigDecimal(pointValues.get(dataNo).toString())); }else { result.put(dataNo,badValue); plantData.setValue(badValue); } break; case IND: List<ApiIndItemValueDTO> indValues = indItemApi.queryIndItemDefaultValue(dataNo); if (!CollectionUtils.isEmpty(indValues)) { result.put(dataNo,new BigDecimal(indValues.get(0).getDataValue().toString())); plantData.setValue(new BigDecimal(indValues.get(0).getDataValue().toString())); }else { result.put(dataNo,badValue); plantData.setValue(badValue); } break; case ARC: ApiArcDataDTO apiArcDataDTO = arcDataApi.queryArcLastValue(dataNo); if (apiArcDataDTO != null) { result.put(dataNo,apiArcDataDTO.getArcValue()); plantData.setValue(apiArcDataDTO.getArcValue()); }else { result.put(dataNo,badValue); plantData.setValue(badValue); } break; default: result.put(dataNo,badValue); plantData.setValue(badValue); break; } result.add(plantData); } return result; } ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/service/impl/PlantIndexConfServiceImpl.java
对比新文件 @@ -0,0 +1,69 @@ package com.iailab.module.ansteel.plant.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.module.ansteel.plant.dao.PlantIndexConfDao; import com.iailab.module.ansteel.plant.entity.PlantIndexConfEntity; import com.iailab.module.ansteel.plant.service.PlantIndexConfService; import com.iailab.module.ansteel.plant.vo.PlantIndexDataVO; import com.iailab.module.data.api.point.DataPointApi; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @description: * @author: dzd * @date: 2025/6/16 13:57 **/ @Slf4j @Service public class PlantIndexConfServiceImpl implements PlantIndexConfService { @Resource private PlantIndexConfDao plantIndexConfDao; @Resource private DataPointApi dataPointApi; private final BigDecimal badValue = new BigDecimal(-2); @Override public List<PlantIndexDataVO> getPlantIndexData(String businessType) { QueryWrapper<PlantIndexConfEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("business_type",businessType); List<PlantIndexConfEntity> PlantIndexConfList = plantIndexConfDao.selectList(queryWrapper); // 筛选DATAPOINT一次性查询出全部 List<String> pointNos = PlantIndexConfList.stream().flatMap(e -> Stream.of(e.getIndAvg(),e.getIndTheory(),e.getIndOptimal(),e.getIndReal(),e.getIndDeviationValue(),e.getIndDeviationRate(),e.getIndPrevious())).collect(Collectors.toList()); Map<String, Object> pointValues = new HashMap<>(); if (!CollectionUtils.isEmpty(pointNos)) { pointValues = dataPointApi.queryPointsRealValue(pointNos); } List<PlantIndexDataVO> result = new ArrayList<>(PlantIndexConfList.size()); for (PlantIndexConfEntity PlantIndexConf : PlantIndexConfList) { PlantIndexDataVO plantData = new PlantIndexDataVO(); plantData.setCode(PlantIndexConf.getIndCode()); plantData.setName(PlantIndexConf.getIndName()); plantData.setUnit(PlantIndexConf.getIndUnit()); plantData.setSort(PlantIndexConf.getSort()); plantData.setIndAvg(pointValues.containsKey(PlantIndexConf.getIndAvg()) ? new BigDecimal(pointValues.get(PlantIndexConf.getIndAvg()).toString()) : badValue); plantData.setIndTheory(pointValues.containsKey(PlantIndexConf.getIndTheory()) ? new BigDecimal(pointValues.get(PlantIndexConf.getIndTheory()).toString()) : badValue); plantData.setIndOptimal(pointValues.containsKey(PlantIndexConf.getIndOptimal()) ? new BigDecimal(pointValues.get(PlantIndexConf.getIndOptimal()).toString()) : badValue); plantData.setIndReal(pointValues.containsKey(PlantIndexConf.getIndReal()) ? new BigDecimal(pointValues.get(PlantIndexConf.getIndReal()).toString()) : badValue); plantData.setIndDeviationValue(pointValues.containsKey(PlantIndexConf.getIndDeviationValue()) ? new BigDecimal(pointValues.get(PlantIndexConf.getIndDeviationValue()).toString()) : badValue); plantData.setIndDeviationRate(pointValues.containsKey(PlantIndexConf.getIndDeviationRate()) ? new BigDecimal(pointValues.get(PlantIndexConf.getIndDeviationRate()).toString()) : badValue); plantData.setIndPrevious(pointValues.containsKey(PlantIndexConf.getIndPrevious()) ? new BigDecimal(pointValues.get(PlantIndexConf.getIndPrevious()).toString()) : badValue); result.add(plantData); } return result; } } ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/vo/PlantDataVO.java
对比新文件 @@ -0,0 +1,28 @@ package com.iailab.module.ansteel.plant.vo; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; /** * @description: * @author: dzd * @date: 2025/6/16 13:59 **/ @Data public class PlantDataVO implements Serializable { private static final long serialVersionUID = 1L; private String code; private String name; private String unit; private BigDecimal value; private Integer sort; } ansteel-biz/src/main/java/com/iailab/module/ansteel/plant/vo/PlantIndexDataVO.java
对比新文件 @@ -0,0 +1,38 @@ package com.iailab.module.ansteel.plant.vo; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; /** * @description: * @author: dzd * @date: 2025/6/16 13:59 **/ @Data public class PlantIndexDataVO implements Serializable { private static final long serialVersionUID = 1L; private String code; private String name; private String unit; private BigDecimal indAvg; private BigDecimal indTheory; private BigDecimal indOptimal; private BigDecimal indReal; private BigDecimal indDeviationValue; private BigDecimal indDeviationRate; private BigDecimal indPrevious; private Integer sort; }