1.pqbug修改

This commit is contained in:
wr
2023-06-02 16:36:25 +08:00
parent 7f71e9e5d8
commit e37fbf4f47
7 changed files with 128 additions and 86 deletions

View File

@@ -2,33 +2,26 @@ package com.njcn.device.pq.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.njcn.device.pq.mapper.OnlineRateMapper;
import com.njcn.device.pq.mapper.RStatIntegrityDMapper;
import com.njcn.device.pq.mapper.RStatOnlinerateDMapper;
import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.param.PulicTimeParam;
import com.njcn.device.pq.pojo.param.PulicTimeStatisParam;
import com.njcn.device.pq.pojo.po.LineDataIntegrity;
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
import com.njcn.device.pq.pojo.vo.*;
import com.njcn.device.pq.service.CommunicateService;
import com.njcn.device.pq.service.IRStatOnlinerateDService;
import com.njcn.device.pq.service.LineService;
import com.njcn.device.pq.utils.PublicDateUtil;
import com.njcn.influxdb.utils.InfluxDbUtils;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import org.apache.commons.lang.StringUtils;
import org.influxdb.dto.QueryResult;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import static com.njcn.influxdb.param.InfluxDBPublicParam.*;
/**
* @author denghuajun
@@ -97,30 +90,48 @@ public class CommunicateServiceImpl implements CommunicateService {
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<String> 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)));
List<String> intervalTime = this.getIntervalTime(pulicTimeParam.getSearchBeginTime(),pulicTimeParam.getSearchEndTime());
for (int j = 0; j < intervalTime.size(); j++) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date dt ;
Date dtDate;
if(j==0){
dt= simpleDateFormat.parse(pulicTimeParam.getSearchBeginTime());
}else{
String startTime = PublicDateUtil.getFisrtDayOfMonth(Integer.parseInt(intervalTime.get(j).substring(0, 4)), Integer.parseInt(intervalTime.get(j).substring(5)));
dt= simpleDateFormat.parse(startTime);
}
int beginDay = Integer.valueOf(String.format("%td", dt));
if(j==intervalTime.size()-1){
dtDate= simpleDateFormat.parse(pulicTimeParam.getSearchEndTime());
}else{
String startTime = PublicDateUtil.getLastDayOfMonth(Integer.parseInt(intervalTime.get(j).substring(0, 4)), Integer.parseInt(intervalTime.get(j).substring(5)));
dtDate= simpleDateFormat.parse(startTime);
}
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<String> dayTime = this.getIntervalDateTime(year,beginDay, mon, day);
for (String interTime : dayTime) {
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 =simpleDateFormat.format(DateUtil.beginOfDay(DateUtil.parse(interTime)));
endTime = simpleDateFormat.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)));
}
deviceOnlineDataList.add(inter);
}
deviceOnlineDataList.add(inter);
}
}
return deviceOnlineDataList;
}
@@ -290,13 +301,13 @@ public class CommunicateServiceImpl implements CommunicateService {
}
@SneakyThrows
private List<String> getIntervalDateTime(Integer startTime, Integer endTime,Integer dd) {
private List<String> getIntervalDateTime(Integer startTime, int beginDay,Integer endTime,Integer dd) {
List<String> 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++) {
for (int i = beginDay; i <= dd; i++) {
String date = null;
if (month < 10 && i < 10) {
date = year + "-0" + month + "-0" + i;