From 4a5ba60fbf8179ea4a883adf8c924a69253ddd52 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Thu, 16 May 2024 10:03:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B2=B9=E4=BA=95=E4=B8=A4=E5=BC=A0?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=9B=BE=E8=A1=A8=E6=94=B9=E4=B8=BA=E4=BB=8E?= =?UTF-8?q?redis=E4=B8=AD=E8=8E=B7=E5=8F=96=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/entity/KhOilRealtimeData.java | 61 ++++++++++++++++--- .../modules/entity/OilRealTimeRedisData.java | 22 +++++++ .../impl/KhOilRealtimeDataServiceImpl.java | 41 +++---------- 3 files changed, 85 insertions(+), 39 deletions(-) create mode 100644 kh-modules/src/main/java/com/jero/modules/entity/OilRealTimeRedisData.java diff --git a/kh-modules/src/main/java/com/jero/modules/entity/KhOilRealtimeData.java b/kh-modules/src/main/java/com/jero/modules/entity/KhOilRealtimeData.java index da0fe573..9963f7be 100644 --- a/kh-modules/src/main/java/com/jero/modules/entity/KhOilRealtimeData.java +++ b/kh-modules/src/main/java/com/jero/modules/entity/KhOilRealtimeData.java @@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import com.jero.modules.utils.RandomNumberUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -17,10 +20,8 @@ import org.springframework.format.annotation.DateTimeFormat; import redis.clients.jedis.Jedis; import java.io.Serializable; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.text.SimpleDateFormat; +import java.util.*; /** * @author: Mzaxd @@ -203,8 +204,14 @@ public class KhOilRealtimeData implements Serializable { private static boolean db1Select = true; - public void mockKhOilRealtimeRedisData() { + private static ObjectMapper mapper = new ObjectMapper(); + + public void mockKhOilRealtimeRedisData(Map result) throws JsonProcessingException { Map> map = new HashMap<>(); + List> ShangChongCheng = new ArrayList<>(); + List> XiaChongCheng = new ArrayList<>(); + List> ZuiDaZaiHe = new ArrayList<>(); + List> ZuiXiaoZaiHe = new ArrayList<>(); JSONArray data = new JSONArray(); // 连接到Redis服务器 try (Jedis jedis = new Jedis("1.15.107.30", 6379)) { @@ -221,11 +228,25 @@ public class KhOilRealtimeData implements Serializable { data = JSON.parseArray(jsonData); } + ObjectMapper mapper = new ObjectMapper(); + for (Object item : data) { JSONObject jsonObject = (JSONObject) item; String name = jsonObject.getString("Name"); - List values = jsonObject.getJSONArray("Values").toJavaList(Double.class); - map.put(name, values); + if (!name.equals("ShiShiShiGongTu") && !name.equals("ZaiHeFenBuTu")) { + List values = jsonObject.getJSONArray("Values").toJavaList(Double.class); + map.put(name, values); + } + switch (name) { + case "ShiShiShiGongTu": + ShangChongCheng = mapper.readValue(jsonObject.getString("ShangChongCheng"), new TypeReference>>(){}); + XiaChongCheng = mapper.readValue(jsonObject.getString("XiaChongCheng"), new TypeReference>>(){}); + break; + case "ZaiHeFenBuTu": + ZuiDaZaiHe = mapper.readValue(jsonObject.getString("ZuiDaZaiHe"), new TypeReference>>(){}); + ZuiXiaoZaiHe = mapper.readValue(jsonObject.getString("ZuiXiaoZaiHe"), new TypeReference>>(){}); + break; + } } int size = map.get("YouYa").size(); this.oilPressure = map.get("YouYa").get(dbIndex); @@ -246,6 +267,32 @@ public class KhOilRealtimeData implements Serializable { this.maxLoad = 0; this.deviceId = "default"; this.id = "default"; + + + Map chartTwo = new HashMap<>(); + Integer[] arr = {0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250}; + List chartTwoX = Arrays.asList(arr); + List chartTwoUp = ShangChongCheng != null ? ShangChongCheng.get(dbIndex) : null; + List chartTwoDown = XiaChongCheng != null ? XiaChongCheng.get(dbIndex) : null; + chartTwo.put("X轴", chartTwoX); + chartTwo.put("上冲程", chartTwoUp); + chartTwo.put("下冲程", chartTwoDown); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + chartTwo.put("时间", sdf.format(new Date())); + chartTwo.put("冲程", chartTwoUp.get(0)); + chartTwo.put("冲次", chartTwoDown.get(0)); + result.put("实时示功图", chartTwo); + + Map> chartThree = new HashMap<>(); + List chartThreeX = RandomNumberUtil.getLast30DaysFormattedDatesAscending(); + List chartThreeMax = ZuiDaZaiHe != null ? ZuiDaZaiHe.get(dbIndex) : null; + List chartThreeMin = ZuiXiaoZaiHe != null ? ZuiXiaoZaiHe.get(dbIndex) : null; + + chartThree.put("X轴", chartThreeX); + chartThree.put("最大载荷", chartThreeMax); + chartThree.put("最小载荷", chartThreeMin); + result.put("载荷分布图", chartThree); + dbIndex += 1; if (dbIndex >= size) { dbIndex = 0; diff --git a/kh-modules/src/main/java/com/jero/modules/entity/OilRealTimeRedisData.java b/kh-modules/src/main/java/com/jero/modules/entity/OilRealTimeRedisData.java new file mode 100644 index 00000000..bcc99bb9 --- /dev/null +++ b/kh-modules/src/main/java/com/jero/modules/entity/OilRealTimeRedisData.java @@ -0,0 +1,22 @@ +package com.jero.modules.entity; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OilRealTimeRedisData { + + private List> ShangChongCheng; + private List> XiaCongCheng; + private List> ChanYouLiang; + private List> ChanQiLiang; + private List> ZuiDaZaiHe; + private List> ZuiXiaoZaiHe; + +} diff --git a/kh-modules/src/main/java/com/jero/modules/service/impl/KhOilRealtimeDataServiceImpl.java b/kh-modules/src/main/java/com/jero/modules/service/impl/KhOilRealtimeDataServiceImpl.java index 9930c441..c24f4f10 100644 --- a/kh-modules/src/main/java/com/jero/modules/service/impl/KhOilRealtimeDataServiceImpl.java +++ b/kh-modules/src/main/java/com/jero/modules/service/impl/KhOilRealtimeDataServiceImpl.java @@ -1,6 +1,8 @@ package com.jero.modules.service.impl; +import com.fasterxml.jackson.databind.ObjectMapper; import com.jero.modules.entity.KhOilRealtimeData; +import com.jero.modules.entity.OilRealTimeRedisData; import com.jero.modules.mapper.KhOilRealtimeDataMapper; import com.jero.modules.service.IKhOilRealtimeDataService; import com.jero.modules.utils.RandomNumberUtil; @@ -8,12 +10,14 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.jero.common.exception.JeroBootException; +import java.io.IOException; import java.text.SimpleDateFormat; import java.util.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.system.query.QueryGenerator; +import redis.clients.jedis.Jedis; import javax.servlet.http.HttpServletRequest; @@ -69,39 +73,12 @@ public class KhOilRealtimeDataServiceImpl extends ServiceImpl realtimeDataResults(String id) { KhOilRealtimeData khOilRealtimeData = new KhOilRealtimeData(); Map result = new HashMap<>(); - khOilRealtimeData.mockKhOilRealtimeRedisData(); + try { + khOilRealtimeData.mockKhOilRealtimeRedisData(result); + } catch (Exception e) { + log.error("从redis获取数据错误", e); + } result.put("油井实时参数", khOilRealtimeData); - Map chartTwo = new HashMap<>(); - Integer[] arr = {0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250}; - List chartTwoX = Arrays.asList(arr); - List chartTwoUp = RandomNumberUtil.generateFakeDataList(arr.length, Integer.class); - List chartTwoDown = this.getRandomMinusDataList(chartTwoUp); - chartTwo.put("X轴", chartTwoX); - chartTwo.put("上冲程", chartTwoUp); - chartTwo.put("下冲程", chartTwoDown); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - chartTwo.put("时间", sdf.format(new Date())); - chartTwo.put("冲程", RandomNumberUtil.getRandomDouble()); - chartTwo.put("冲次", RandomNumberUtil.getRandomDouble()); - result.put("实时示功图", chartTwo); - Map> chartThree = new HashMap<>(); - List chartThreeX = RandomNumberUtil.getLast30DaysFormattedDatesAscending(); - List chartThreeMax = RandomNumberUtil.generateFakeDataList(chartThreeX.size(), Integer.class); - List chartThreeMin = this.getRandomMinusDataList(chartThreeMax); - chartThree.put("X轴", chartThreeX); - chartThree.put("最大载荷", chartThreeMax); - chartThree.put("最小载荷", chartThreeMin); - result.put("载荷分布图", chartThree); return result; } - - private List getRandomMinusDataList(List originList) { - List data = new ArrayList<>(); - for (Integer originData : originList) { - data.add(originData - RandomNumberUtil.getRandomIntBetween(5, 40)); - } - return data; - } - - }