|
@@ -0,0 +1,236 @@
|
|
|
+package com.gyee.alarm.service;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import com.gyee.alarm.init.Cache.PointUnitCache;
|
|
|
+import com.gyee.alarm.init.Cache.WindturbineCache;
|
|
|
+import com.gyee.alarm.mapper.auto.ProBasicDeviceMetricsMapper;
|
|
|
+import com.gyee.alarm.mapper.auto.ProBasicDeviceModelMetricsMapper;
|
|
|
+import com.gyee.alarm.mapper.auto.ProBasicEquipmentPointMapper;
|
|
|
+import com.gyee.alarm.model.auto.ProBasicDeviceMetrics;
|
|
|
+import com.gyee.alarm.model.auto.ProBasicDeviceModelMetrics;
|
|
|
+import com.gyee.alarm.model.auto.ProBasicEquipment;
|
|
|
+import com.gyee.alarm.model.auto.ProBasicEquipmentPoint;
|
|
|
+import com.gyee.alarm.service.auto.impl.ProBasicDeviceMetricsServiceImpl;
|
|
|
+import com.gyee.alarm.service.auto.impl.ProBasicDeviceModelMetricsServiceImpl;
|
|
|
+import com.gyee.alarm.service.auto.impl.ProBasicEquipmentPointServiceImpl;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 设备管理相关数据服务
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@Slf4j
|
|
|
+public class DeviceService {
|
|
|
+ @Resource
|
|
|
+ private WindturbineCache windturbineCache;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ProBasicDeviceMetricsServiceImpl proBasicDeviceMetricsService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ProBasicDeviceModelMetricsServiceImpl proBasicDeviceModelMetricsService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ProBasicEquipmentPointServiceImpl proBasicEquipmentPointService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private PointUnitCache pointUnitCache;
|
|
|
+
|
|
|
+ public JSONObject getTestingPointByStructCode(String deviceId, String structCode, String windturbineId, int pageSize, int pageNum) {
|
|
|
+ JSONObject resultObject = new JSONObject();
|
|
|
+ List<JSONObject> jsonArrayList = new ArrayList<>();
|
|
|
+ String modelId = "";
|
|
|
+ ProBasicEquipment windturbine = windturbineCache.getWindturbine(windturbineId);
|
|
|
+ if (windturbine != null)
|
|
|
+ modelId = windturbine.getModelId();
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(structCode)) {
|
|
|
+ List<ProBasicDeviceMetrics> metricsList = proBasicDeviceMetricsService.getDeviceMetricsByStructureCode(deviceId, structCode);
|
|
|
+
|
|
|
+ List<String> collect = metricsList.stream().map(s -> s.getMetricCode()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (collect.size() > 0) {
|
|
|
+ List<ProBasicDeviceModelMetrics> deviceModelMetricsList = proBasicDeviceModelMetricsService.getDeviceModelMetrics(collect, modelId);
|
|
|
+ List<String> uniformcodeList = deviceModelMetricsList.stream().map(s -> s.getUniformCode()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<String> uniformcodeList_AI = uniformcodeList.stream().filter(s -> s.toUpperCase().contains("AI")).collect(Collectors.toList());
|
|
|
+ List<String> uniformcodeList_DI = uniformcodeList.stream().filter(s -> s.toUpperCase().contains("DI")).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<ProBasicEquipmentPoint> testingPointAIS = new ArrayList<>();
|
|
|
+ if (uniformcodeList_AI.size() > 0)
|
|
|
+ testingPointAIS = proBasicEquipmentPointService.getPointListAI(windturbineId, uniformcodeList_AI);
|
|
|
+ List<ProBasicEquipmentPoint> testingPointDIS = new ArrayList<>();
|
|
|
+ if (uniformcodeList_DI.size() > 0)
|
|
|
+ testingPointDIS = proBasicEquipmentPointService.getPointListDI(windturbineId, uniformcodeList_DI);
|
|
|
+
|
|
|
+ Map<String, ProBasicDeviceMetrics> mapByModel = pointUnitCache.getMapByModel(modelId);
|
|
|
+
|
|
|
+ List<JSONObject> array_ai = new ArrayList<>();
|
|
|
+ List<JSONObject> array_di = new ArrayList<>();
|
|
|
+ for (ProBasicEquipmentPoint ai :
|
|
|
+ testingPointAIS) {
|
|
|
+
|
|
|
+ if(ai.getUniformCode()==null||!ai.getUniformCode().toUpperCase().startsWith("AI"))
|
|
|
+ continue;
|
|
|
+ JSONObject obj = new JSONObject();
|
|
|
+
|
|
|
+ obj.put("englishName", ai.getEnglishName());
|
|
|
+ obj.put("modelId", ai.getModelId());
|
|
|
+ obj.put("name", ai.getName());
|
|
|
+ obj.put("valueUnit", ai.getValueUnit());
|
|
|
+ obj.put("model", ai.getModel());
|
|
|
+ obj.put("typeId", ai.getTypeId());
|
|
|
+ obj.put("id", ai.getId());
|
|
|
+ obj.put("uniformCode", ai.getUniformCode());
|
|
|
+
|
|
|
+
|
|
|
+ String unitName = "";
|
|
|
+ String unitNameCn = "";
|
|
|
+ if (mapByModel != null) {
|
|
|
+ if (mapByModel.containsKey(ai.getUniformCode())) {
|
|
|
+ unitName = mapByModel.get(ai.getUniformCode()).getUnitName();
|
|
|
+ unitNameCn = mapByModel.get(ai.getUniformCode()).getUnitNamecn();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ obj.put("unitName", unitName);
|
|
|
+ obj.put("unitNameCn", unitNameCn);
|
|
|
+ array_ai.add(obj);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ for (ProBasicEquipmentPoint di :
|
|
|
+ testingPointDIS) {
|
|
|
+ if(di.getUniformCode()==null||!di.getUniformCode().toUpperCase().startsWith("DI"))
|
|
|
+ continue;
|
|
|
+ JSONObject obj = new JSONObject();
|
|
|
+
|
|
|
+ obj.put("englishName", di.getEnglishName());
|
|
|
+ obj.put("modelId", di.getModelId());
|
|
|
+ obj.put("name", di.getName());
|
|
|
+ obj.put("valueUnit", di.getValueUnit());
|
|
|
+ obj.put("model", di.getModel());
|
|
|
+ obj.put("typeId", di.getTypeId());
|
|
|
+ obj.put("id", di.getId());
|
|
|
+ obj.put("uniformCode", di.getUniformCode());
|
|
|
+ String unitName = "";
|
|
|
+ String unitNameCn = "";
|
|
|
+ if (mapByModel != null) {
|
|
|
+ if (mapByModel.containsKey(di.getUniformCode())) {
|
|
|
+ unitName = mapByModel.get(di.getUniformCode()).getUnitName();
|
|
|
+ unitNameCn = mapByModel.get(di.getUniformCode()).getUnitNamecn();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ obj.put("unitName", unitName);
|
|
|
+ obj.put("unitNameCn", unitNameCn);
|
|
|
+ array_di.add(obj);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ jsonArrayList.addAll(array_ai);
|
|
|
+ jsonArrayList.addAll(array_di);
|
|
|
+
|
|
|
+ List<List<JSONObject>> partition = Lists.partition(jsonArrayList, pageSize);
|
|
|
+
|
|
|
+ if (partition.size() > 0)
|
|
|
+ resultObject.put("records", partition.get(pageNum - 1));
|
|
|
+ else
|
|
|
+ resultObject.put("records", new ArrayList<>());
|
|
|
+ resultObject.put("total", jsonArrayList.size());
|
|
|
+ resultObject.put("pages", partition.size());
|
|
|
+ resultObject.put("current", pageNum);
|
|
|
+
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+
|
|
|
+ List<ProBasicEquipmentPoint> aiPointList = proBasicEquipmentPointService.getPointListAI(windturbineId, new ArrayList<>());
|
|
|
+ List<ProBasicEquipmentPoint> diPointList = proBasicEquipmentPointService.getPointListDI(windturbineId, new ArrayList<>());
|
|
|
+
|
|
|
+ Map<String, ProBasicDeviceMetrics> mapByModel = pointUnitCache.getMapByModel(modelId);
|
|
|
+
|
|
|
+ List<JSONObject> array_ai = new ArrayList<>();
|
|
|
+ List<JSONObject> array_di = new ArrayList<>();
|
|
|
+ for (ProBasicEquipmentPoint ai :
|
|
|
+ aiPointList) {
|
|
|
+ if(ai.getUniformCode()==null||!ai.getUniformCode().toUpperCase().startsWith("AI"))
|
|
|
+ continue;
|
|
|
+ JSONObject obj = new JSONObject();
|
|
|
+ obj.put("englishName", ai.getEnglishName());
|
|
|
+ obj.put("modelId", ai.getModelId());
|
|
|
+ obj.put("name", ai.getName());
|
|
|
+ obj.put("valueUnit", ai.getValueUnit());
|
|
|
+ obj.put("model", ai.getModel());
|
|
|
+ obj.put("typeId", ai.getTypeId());
|
|
|
+ obj.put("id", ai.getId());
|
|
|
+ obj.put("uniformCode", ai.getUniformCode());
|
|
|
+ String unitName = "";
|
|
|
+ String unitNameCn = "";
|
|
|
+ if (mapByModel != null) {
|
|
|
+ if (mapByModel.containsKey(ai.getUniformCode())) {
|
|
|
+ unitName = mapByModel.get(ai.getUniformCode()).getUnitName();
|
|
|
+ unitNameCn = mapByModel.get(ai.getUniformCode()).getUnitNamecn();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ obj.put("unitName", unitName);
|
|
|
+ obj.put("unitNameCn", unitNameCn);
|
|
|
+ array_ai.add(obj);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ for (ProBasicEquipmentPoint di :
|
|
|
+ diPointList) {
|
|
|
+ if(di.getUniformCode()==null||!di.getUniformCode().toUpperCase().startsWith("DI"))
|
|
|
+ continue;
|
|
|
+ JSONObject obj = new JSONObject();
|
|
|
+ obj.put("englishName", di.getEnglishName());
|
|
|
+ obj.put("modelId", di.getModelId());
|
|
|
+ obj.put("name", di.getName());
|
|
|
+ obj.put("valueUnit", di.getValueUnit());
|
|
|
+ obj.put("model", di.getModel());
|
|
|
+ obj.put("typeId", di.getTypeId());
|
|
|
+ obj.put("id", di.getId());
|
|
|
+ obj.put("uniformCode", di.getUniformCode());
|
|
|
+
|
|
|
+ String unitName = "";
|
|
|
+ String unitNameCn = "";
|
|
|
+ if (mapByModel != null) {
|
|
|
+ if (mapByModel.containsKey(di.getUniformCode())) {
|
|
|
+ unitName = mapByModel.get(di.getUniformCode()).getUnitName();
|
|
|
+ unitNameCn = mapByModel.get(di.getUniformCode()).getUnitNamecn();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ obj.put("unitName", unitName);
|
|
|
+ obj.put("unitNameCn", unitNameCn);
|
|
|
+ array_di.add(obj);
|
|
|
+
|
|
|
+ }
|
|
|
+ jsonArrayList.addAll(array_ai);
|
|
|
+ jsonArrayList.addAll(array_di);
|
|
|
+
|
|
|
+ List<List<JSONObject>> partition = Lists.partition(jsonArrayList, pageSize);
|
|
|
+
|
|
|
+ if (partition.size() > 0)
|
|
|
+ resultObject.put("records", partition.get(pageNum - 1));
|
|
|
+ else
|
|
|
+ resultObject.put("records", new ArrayList<>());
|
|
|
+ resultObject.put("total", jsonArrayList.size());
|
|
|
+ resultObject.put("pages", partition.size());
|
|
|
+ resultObject.put("current", pageNum);
|
|
|
+ }
|
|
|
+ return resultObject;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|