From fda3b2c1727cb9321b176408f97c49b032f230a2 Mon Sep 17 00:00:00 2001 From: njcn_dhj <123456> Date: Fri, 26 Aug 2022 13:57:03 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=BB=88=E7=AB=AF=E7=8A=B6=E6=80=81=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/pojo/param/PulicTimeParam.java | 3 + .../service/impl/CommunicateServiceImpl.java | 93 +++++++++++++++---- 2 files changed, 79 insertions(+), 17 deletions(-) diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/PulicTimeParam.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/PulicTimeParam.java index 0c7e3c288..b79fe3a32 100644 --- a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/PulicTimeParam.java +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/PulicTimeParam.java @@ -27,4 +27,7 @@ public class PulicTimeParam { @Pattern(regexp = PatternRegex.TIME_FORMAT, message = "时间格式错误") private String searchEndTime; + @ApiModelProperty("时间标识:0--年/季度;1--月") + private Integer timeFlag; + } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/CommunicateServiceImpl.java b/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/CommunicateServiceImpl.java index 4bba0373a..135e060a4 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/CommunicateServiceImpl.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/CommunicateServiceImpl.java @@ -1,6 +1,9 @@ package com.njcn.device.service.impl; +import cn.hutool.core.date.DateUtil; import com.njcn.device.api.LineFeignClient; +import com.njcn.device.pojo.po.Communicate; +import com.njcn.device.pojo.vo.AbnomalCommuncateVO; import com.njcn.device.pojo.vo.CommunicateVO; import com.njcn.device.pojo.param.PulicTimeParam; import com.njcn.device.pojo.param.PulicTimeStatisParam; @@ -22,9 +25,7 @@ import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; import static com.njcn.influxdb.param.InfluxDBPublicParam.*; @@ -70,21 +71,52 @@ public class CommunicateServiceImpl implements CommunicateService { List deviceOnlineDataList = new ArrayList<>(); //根据监测点id获取终端id String devId = lineService.getLineIdByDevId(pulicTimeParam.getId()); - DecimalFormat decimalFormat=new DecimalFormat(".00"); + DecimalFormat decimalFormat = new DecimalFormat(".00"); Float floatList; - // 获取两个时间的之间的月份 - List intervalTime = this.getIntervalTime(pulicTimeParam.getSearchBeginTime(), pulicTimeParam.getSearchEndTime()); - for (String interTime : intervalTime) { - DeviceOnlineDataVO inter = new DeviceOnlineDataVO(); - String startTime, endTime; - inter.setMonth(interTime.substring(5)); - inter.setYear(interTime.substring(0, 4)); - startTime = PublicDateUtil.getFisrtDayOfMonth(Integer.parseInt(interTime.substring(0,4)),Integer.parseInt(interTime.substring(5))); - endTime = PublicDateUtil.getLastDayOfMonth(Integer.parseInt(interTime.substring(0,4)),Integer.parseInt(interTime.substring(5))); - SimpleValue temp; - floatList = getCondition(devId, startTime, endTime, 1); - inter.setOnlineRate(Float.parseFloat(decimalFormat.format(floatList*100))); - deviceOnlineDataList.add(inter); + if (pulicTimeParam.getTimeFlag() == 0) { + // 获取两个时间的之间的月份 + List intervalTime = this.getIntervalTime(pulicTimeParam.getSearchBeginTime(), pulicTimeParam.getSearchEndTime()); + for (String interTime : intervalTime) { + DeviceOnlineDataVO inter = new DeviceOnlineDataVO(); + String startTime, endTime; + inter.setMonth(interTime.substring(5)); + inter.setYear(interTime.substring(0, 4)); + inter.setDay("/"); + startTime = PublicDateUtil.getFisrtDayOfMonth(Integer.parseInt(interTime.substring(0, 4)), Integer.parseInt(interTime.substring(5))); + endTime = PublicDateUtil.getLastDayOfMonth(Integer.parseInt(interTime.substring(0, 4)), Integer.parseInt(interTime.substring(5))); + floatList = getCondition(devId, startTime, endTime, 1); + if (floatList == 0) { + inter.setOnlineRate(3.14159f); + } else { + inter.setOnlineRate(Float.parseFloat(decimalFormat.format(floatList * 100))); + } + deviceOnlineDataList.add(inter); + } + } else { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date dt = simpleDateFormat.parse(pulicTimeParam.getSearchBeginTime()); + Date dtDate = simpleDateFormat.parse(pulicTimeParam.getSearchEndTime()); + Integer year = Integer.valueOf(String.format("%tY", dt)); + Integer mon = Integer.valueOf(String.format("%tm", dt)); + Integer day = Integer.valueOf(String.format("%td", dtDate)); + List intervalTime = this.getIntervalDateTime(year, mon,day); + for (String interTime : intervalTime) { + DeviceOnlineDataVO inter = new DeviceOnlineDataVO(); + String startTime, endTime; + inter.setMonth(interTime.substring(5, 7)); + inter.setYear(interTime.substring(0, 4)); + inter.setDay(interTime.substring(8)); + startTime =sdf.format(DateUtil.beginOfDay(DateUtil.parse(interTime))); + endTime = sdf.format(DateUtil.endOfDay(DateUtil.parse(interTime))); + floatList = getCondition(devId, startTime, endTime, 1); + if (floatList == 0) { + inter.setOnlineRate(3.14159f); + } else { + inter.setOnlineRate(Float.parseFloat(decimalFormat.format(floatList * 100))); + } + deviceOnlineDataList.add(inter); + } } return deviceOnlineDataList; } @@ -226,4 +258,31 @@ public class CommunicateServiceImpl implements CommunicateService { } return times; } + + @SneakyThrows + private List getIntervalDateTime(Integer startTime, Integer endTime,Integer dd) { + List list = new ArrayList<>(); + Calendar calendar = Calendar.getInstance(Locale.CHINA); + calendar.set(startTime, endTime - 1, 1); + int year = calendar.get(Calendar.YEAR);//年份 + int month = calendar.get(Calendar.MONTH) + 1;//月份 + for (int i = 1; i <= dd; i++) { + String date = null; + if (month < 10 && i < 10) { + date = year + "-0" + month + "-0" + i; + } + if (month < 10 && i >= 10) { + date = year + "-0" + month + "-" + i; + } + if (month >= 10 && i < 10) { + date = year + "-" + month + "-0" + i; + } + if (month >= 10 && i >= 10) { + date = year + "-" + month + "-" + i; + } + + list.add(date); + } + return list; + } }