|
@@ -6,11 +6,12 @@ import net.sf.json.JSONObject;
|
|
import org.apache.commons.codec.binary.Base64;
|
|
import org.apache.commons.codec.binary.Base64;
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
import org.jeecg.common.util.DateUtils;
|
|
import org.jeecg.common.util.DateUtils;
|
|
|
|
+import org.jeecg.common.util.RedisUtil;
|
|
|
|
+import org.jeecg.modules.common.GuanCommonConstant;
|
|
import org.jeecg.modules.system.entity.SysDictItem;
|
|
import org.jeecg.modules.system.entity.SysDictItem;
|
|
import org.jeecg.modules.system.service.ISysDictItemService;
|
|
import org.jeecg.modules.system.service.ISysDictItemService;
|
|
-import org.jeecg.modules.webaccess.dto.CirculateDTO;
|
|
|
|
-import org.jeecg.modules.webaccess.dto.SectionDTO;
|
|
|
|
-import org.jeecg.modules.webaccess.dto.WaLogDTO;
|
|
|
|
|
|
+import org.jeecg.modules.webaccess.dto.*;
|
|
|
|
+import org.jeecg.modules.webaccess.entity.GuanAnachglog;
|
|
import org.jeecg.modules.webaccess.entity.GuanDashboardParam;
|
|
import org.jeecg.modules.webaccess.entity.GuanDashboardParam;
|
|
import org.jeecg.modules.webaccess.entity.GuanRAlarm;
|
|
import org.jeecg.modules.webaccess.entity.GuanRAlarm;
|
|
import org.jeecg.modules.webaccess.entity.GuanTest;
|
|
import org.jeecg.modules.webaccess.entity.GuanTest;
|
|
@@ -34,6 +35,7 @@ import java.time.temporal.ChronoUnit;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.jar.JarEntry;
|
|
import java.util.jar.JarEntry;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 调用webaccess的接口
|
|
* 调用webaccess的接口
|
|
@@ -54,7 +56,13 @@ public class WebAccessService {
|
|
private GuanTestMapper guanTestMapper;
|
|
private GuanTestMapper guanTestMapper;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- private GuanRAlarmMapper guanRAlarmMapper;
|
|
|
|
|
|
+ private IGuanRAlarmService guanRAlarmService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private RedisUtil redisUtil;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IGuanAnachglogService anachglogService;
|
|
|
|
|
|
|
|
|
|
//region <<字典获取webaccess信息>>
|
|
//region <<字典获取webaccess信息>>
|
|
@@ -425,7 +433,7 @@ public class WebAccessService {
|
|
|
|
|
|
//region <<根据大屏参数设置,获取实时点位值>>
|
|
//region <<根据大屏参数设置,获取实时点位值>>
|
|
/**
|
|
/**
|
|
- * 取得测点(Tag)的量测值
|
|
|
|
|
|
+ * 获取实时点位值
|
|
*
|
|
*
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@@ -607,181 +615,371 @@ public class WebAccessService {
|
|
}
|
|
}
|
|
//endregion
|
|
//endregion
|
|
|
|
|
|
- //region <<根据大屏参数设定,取得历史记录>>
|
|
|
|
|
|
+ //region <<根据大屏参数设置,获取实时曲线、全程曲线>>
|
|
|
|
+
|
|
/**
|
|
/**
|
|
- * 取得历史记录
|
|
|
|
- *
|
|
|
|
|
|
+ * 获取实时曲线
|
|
|
|
+ * @param startTime 开始时间
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- public JSONArray getDashboardDataLog(Date startTime) {
|
|
|
|
|
|
+ public List<CurveDTO> getRealtimeCurve(Date startTime) {
|
|
// 获取大屏参数设置
|
|
// 获取大屏参数设置
|
|
GuanDashboardParam paramat = new GuanDashboardParam();
|
|
GuanDashboardParam paramat = new GuanDashboardParam();
|
|
paramat.setStatus("1"); // 状态为启用
|
|
paramat.setStatus("1"); // 状态为启用
|
|
paramat.setIflog("Y"); // 需要获取历史记录
|
|
paramat.setIflog("Y"); // 需要获取历史记录
|
|
List<GuanDashboardParam> dashboardParamList = dashboardParamMapper.selectAllDashboardParam(paramat);
|
|
List<GuanDashboardParam> dashboardParamList = dashboardParamMapper.selectAllDashboardParam(paramat);
|
|
|
|
+ if (dashboardParamList == null || dashboardParamList.size() < 1) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
|
|
// 组合参数信息
|
|
// 组合参数信息
|
|
- JSONArray list = new JSONArray();
|
|
|
|
- if (dashboardParamList != null && dashboardParamList.size() > 0) {
|
|
|
|
- Integer ssIntervals = null; // 实时曲线的 每笔数据之间隔时间
|
|
|
|
- Integer qcIntervals = null; // 全程曲线的 每笔数据之间隔时间
|
|
|
|
-
|
|
|
|
- Integer ssRecord = null; // 实时曲线的 获取记录条数
|
|
|
|
- Integer qcRecord = null; // 全程曲线的 获取记录条数
|
|
|
|
-
|
|
|
|
- Integer ssDuration = null; // 实时曲线的 获取历史记录时长
|
|
|
|
-
|
|
|
|
- Date now = new Date();
|
|
|
|
-
|
|
|
|
- // 获取试验运行时间
|
|
|
|
-// List<WaLogDTO> tags = new ArrayList<>();
|
|
|
|
-// WaLogDTO waLogDTO = new WaLogDTO("试验运行时间");
|
|
|
|
-// tags.add(waLogDTO);
|
|
|
|
-// JSONObject waparams = generateGetObject(tags);
|
|
|
|
-// Integer syyxsj = Integer.parseInt(getTagNameValues(waparams)); // 获取试验运行时间
|
|
|
|
-//
|
|
|
|
-// // 防止试验运行时间太长,导致查询不到数据(3个月*30天*24小时*60分钟*60秒 = 7,776,000)
|
|
|
|
-// syyxsj = syyxsj < 7776000 ? syyxsj : 7776000;
|
|
|
|
-//
|
|
|
|
-// // 开始时间
|
|
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
|
- calendar.setTime(now); // 设置当前的时间戳
|
|
|
|
-// calendar.add(Calendar.SECOND, -syyxsj);
|
|
|
|
-// Date startTime = calendar.getTime(); // 试验开始时间(也是 全程曲线开始时间)
|
|
|
|
- GuanTest guanTest = guanTestMapper.selectTop1Test();
|
|
|
|
- startTime = startTime == null ? guanTest.getStarttime() : startTime; // 试验开始时间(也是 全程曲线开始时间)
|
|
|
|
- Integer syyxsj = Integer.parseInt(((now.getTime() - startTime.getTime()) / 1000) + "");
|
|
|
|
- Date realityTime = null; // 实时曲线开始时间
|
|
|
|
|
|
+ List<CurveDTO> curveList = new ArrayList<CurveDTO>();
|
|
|
|
+ Integer ssIntervals = null; // 实时曲线的 每笔数据之间隔时间
|
|
|
|
+ Integer ssRecord = null; // 实时曲线的 获取记录条数
|
|
|
|
+ Integer ssDuration = null; // 实时曲线的 获取历史记录时长
|
|
|
|
+ Date now = new Date();
|
|
|
|
|
|
- for (GuanDashboardParam param : dashboardParamList) {
|
|
|
|
- if (param.getTagName() != null && !"".equals(param.getTagName())) {
|
|
|
|
- JSONObject jo = null;
|
|
|
|
-
|
|
|
|
- // 1 获取 实时曲线 参数
|
|
|
|
- if (param.getParamName().equals("辐射强度值-实时") || param.getParamName().equals("湿度实值-实时") ||
|
|
|
|
- param.getParamName().equals("温度实值-实时")) {
|
|
|
|
- // 1.1 每笔数据之间隔时间
|
|
|
|
- if (ssIntervals == null) {
|
|
|
|
- ssIntervals = param.getIntervals() == 0 || param.getIntervals() == null ? 1 : param.getIntervals();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 1.2 开始时间(实验运行时间>历史时长,则用历史时长计算开始时间,否则用实际运行时间计算开始时间)
|
|
|
|
- if (ssDuration == null) {
|
|
|
|
- ssDuration = param.getDuration() == null || param.getDuration() == 0 ? 4 : param.getDuration();
|
|
|
|
- }
|
|
|
|
- if (realityTime == null) {
|
|
|
|
- calendar.setTime(now); // 设置当前的时间戳
|
|
|
|
- if (syyxsj > param.getDuration() * 3600) {
|
|
|
|
- calendar.add(Calendar.HOUR, -ssDuration);
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- calendar.add(Calendar.SECOND, -syyxsj);
|
|
|
|
- }
|
|
|
|
- realityTime = calendar.getTime();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 1.3 计算 获取记录条数
|
|
|
|
- if (ssRecord == null) {
|
|
|
|
- ssRecord = Integer.parseInt((ChronoUnit.MINUTES.between(
|
|
|
|
- LocalDateTime.parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(realityTime).replace(" ", "T")),
|
|
|
|
- LocalDateTime.parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now).replace(" ", "T"))
|
|
|
|
- ) / ssIntervals) + "");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 组合参数
|
|
|
|
- jo = generateDataLogObject(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(realityTime),
|
|
|
|
- param.getIntervaltype() == null || "".equals(param.getIntervaltype()) ? "M" : param.getIntervaltype(),
|
|
|
|
- ssIntervals,
|
|
|
|
- ssRecord,
|
|
|
|
- param.getDatatype() == null || "".equals(param.getDatatype()) ? "0" : param.getDatatype(),
|
|
|
|
- param.getTagName());
|
|
|
|
- }
|
|
|
|
|
|
+ // 开始时间
|
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
|
+ calendar.setTime(now); // 设置当前的时间戳
|
|
|
|
+ // calendar.add(Calendar.SECOND, -syyxsj);
|
|
|
|
+ // Date startTime = calendar.getTime(); // 试验开始时间(也是 全程曲线开始时间)
|
|
|
|
+ GuanTest guanTest = guanTestMapper.selectTop1Test();
|
|
|
|
+ startTime = startTime == null ? guanTest.getStarttime() : startTime; // 试验开始时间(也是 全程曲线开始时间)
|
|
|
|
+ Integer syyxsj = Integer.parseInt(((now.getTime() - startTime.getTime()) / 1000) + "");
|
|
|
|
+ Date realityTime = null; // 实时曲线开始时间
|
|
|
|
+
|
|
|
|
+ for (GuanDashboardParam param : dashboardParamList) {
|
|
|
|
+ // 没有点位名
|
|
|
|
+ if (param.getTagName() == null || "".equals(param.getTagName())) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ // 不是实时曲线设置
|
|
|
|
+ if (!param.getParamName().equals("辐射强度值-实时") && !param.getParamName().equals("湿度实值-实时") &&
|
|
|
|
+ !param.getParamName().equals("温度实值-实时")) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ JSONObject jo = null;
|
|
|
|
+ CurveDTO curve = new CurveDTO();
|
|
|
|
|
|
- // 2 获取 全程曲线 参数
|
|
|
|
- if (param.getParamName().equals("辐射强度值-全程") || param.getParamName().equals("湿度实值-全程") ||
|
|
|
|
- param.getParamName().equals("温度实值-全程")) {
|
|
|
|
- // 2.1 计算每笔数据之间隔时间(设x = 参数定义的间隔时间,y = 间隔天数,计算公式:x + x * y)
|
|
|
|
- qcIntervals = param.getIntervals() == 0 || param.getIntervals() == null ? 1 : param.getIntervals();
|
|
|
|
- LocalDate startLocalDate = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
|
- LocalDate endLocalDate = now.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
|
- Long day = ChronoUnit.DAYS.between(startLocalDate, endLocalDate);
|
|
|
|
- qcIntervals = qcIntervals + qcIntervals * (Integer.parseInt(day.toString()));
|
|
|
|
-
|
|
|
|
- // 2.2 获取记录条数
|
|
|
|
- if (qcRecord == null) {
|
|
|
|
- qcRecord = Integer.parseInt((ChronoUnit.MINUTES.between(
|
|
|
|
- LocalDateTime.parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(startTime).replace(" ", "T")),
|
|
|
|
- LocalDateTime.parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now).replace(" ", "T"))
|
|
|
|
- ) / qcIntervals) + "");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 2.3 组合参数
|
|
|
|
- jo = generateDataLogObject(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(startTime),
|
|
|
|
- param.getIntervaltype() == null || "".equals(param.getIntervaltype()) ? "M" : param.getIntervaltype(),
|
|
|
|
- qcIntervals,
|
|
|
|
- qcRecord,
|
|
|
|
- param.getDatatype() == null || "".equals(param.getDatatype()) ? "0" : param.getDatatype(),
|
|
|
|
- param.getTagName());
|
|
|
|
- }
|
|
|
|
|
|
+ curve.setType("实时");
|
|
|
|
+ // 1.1 每笔数据之间隔时间
|
|
|
|
+ if (ssIntervals == null) {
|
|
|
|
+ ssIntervals = param.getIntervals() == 0 || param.getIntervals() == null ? 1 : param.getIntervals();
|
|
|
|
+ }
|
|
|
|
|
|
- // 获取信息
|
|
|
|
- JSONObject dataLog = GetDataLog(jo);
|
|
|
|
- JSONObject logObj = new JSONObject();
|
|
|
|
- logObj.put("Name", param.getParamName());
|
|
|
|
- if (dataLog.getJSONArray("DataLog").size() > 0) {
|
|
|
|
- logObj.put("Values", dataLog.getJSONArray("DataLog").getJSONObject(0).getJSONArray("Values"));
|
|
|
|
|
|
+ // 1.2 开始时间(实验运行时间>历史时长,则用历史时长计算开始时间,否则用实际运行时间计算开始时间)
|
|
|
|
+ if (ssDuration == null) {
|
|
|
|
+ ssDuration = param.getDuration() == null || param.getDuration() == 0 ? 4 : param.getDuration();
|
|
|
|
+ }
|
|
|
|
+ if (realityTime == null) {
|
|
|
|
+ calendar.setTime(now); // 设置当前的时间戳
|
|
|
|
+ if (syyxsj > param.getDuration() * 3600) {
|
|
|
|
+ calendar.add(Calendar.HOUR, -ssDuration);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ calendar.add(Calendar.SECOND, -syyxsj);
|
|
|
|
+ }
|
|
|
|
+ realityTime = calendar.getTime();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 1.3 计算 获取记录条数
|
|
|
|
+ if (ssRecord == null) {
|
|
|
|
+ ssRecord = Integer.parseInt((ChronoUnit.MINUTES.between(
|
|
|
|
+ LocalDateTime.parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(realityTime).replace(" ", "T")),
|
|
|
|
+ LocalDateTime.parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now).replace(" ", "T"))
|
|
|
|
+ ) / ssIntervals) + "");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 组合参数
|
|
|
|
+ jo = generateDataLogObject(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(realityTime),
|
|
|
|
+ param.getIntervaltype() == null || "".equals(param.getIntervaltype()) ? "M" : param.getIntervaltype(),
|
|
|
|
+ ssIntervals,
|
|
|
|
+ ssRecord,
|
|
|
|
+ param.getDatatype() == null || "".equals(param.getDatatype()) ? "0" : param.getDatatype(),
|
|
|
|
+ param.getTagName());
|
|
|
|
+
|
|
|
|
+ // 获取信息
|
|
|
|
+ JSONObject dataLog = GetDataLog(jo);
|
|
|
|
+ curve.setName(param.getParamName());
|
|
|
|
+ if (dataLog.getJSONArray("DataLog").size() > 0) {
|
|
|
|
+ List<String> values = dataLog.getJSONArray("DataLog").getJSONObject(0).getJSONArray("Values");
|
|
|
|
+ List<CurveSubDTO> subList = new ArrayList<>();
|
|
|
|
+ if (values != null && values.size() > 0) {
|
|
|
|
+ for (String value : values) {
|
|
|
|
+ CurveSubDTO sub = new CurveSubDTO();
|
|
|
|
+ sub.setTagvalue(value);
|
|
|
|
+ subList.add(sub);
|
|
}
|
|
}
|
|
- else {
|
|
|
|
- logObj.put("Values", null);
|
|
|
|
|
|
+ }
|
|
|
|
+ curve.setSubList(subList);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ curve.setSubList(null);
|
|
|
|
+ }
|
|
|
|
+ curveList.add(curve);
|
|
|
|
+ }
|
|
|
|
+ // 设置实时曲线时间分布
|
|
|
|
+ genTime(realityTime, now, ssIntervals, "HH:mm", curveList, "实时");
|
|
|
|
+
|
|
|
|
+ return curveList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取全程曲线
|
|
|
|
+ * @param startTime 开始时间
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public List<CurveDTO> getWholeCurve(Date startTime) {
|
|
|
|
+ // 获取大屏参数设置
|
|
|
|
+ GuanDashboardParam paramat = new GuanDashboardParam();
|
|
|
|
+ paramat.setStatus("1"); // 状态为启用
|
|
|
|
+ paramat.setIflog("Y"); // 需要获取历史记录
|
|
|
|
+ List<GuanDashboardParam> dashboardParamList = dashboardParamMapper.selectAllDashboardParam(paramat);
|
|
|
|
+ if (dashboardParamList == null || dashboardParamList.size() < 1) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 组合参数信息
|
|
|
|
+ List<CurveDTO> curveList = new ArrayList<CurveDTO>();
|
|
|
|
+ Integer qcIntervals = null; // 全程曲线的 每笔数据之间隔时间
|
|
|
|
+ Integer qcRecord = null; // 全程曲线的 获取记录条数
|
|
|
|
+ Date now = new Date();
|
|
|
|
+
|
|
|
|
+ // 获取试验运行时间
|
|
|
|
+ // List<WaLogDTO> tags = new ArrayList<>();
|
|
|
|
+ // WaLogDTO waLogDTO = new WaLogDTO("试验运行时间");
|
|
|
|
+ // tags.add(waLogDTO);
|
|
|
|
+ // JSONObject waparams = generateGetObject(tags);
|
|
|
|
+ // Integer syyxsj = Integer.parseInt(getTagNameValues(waparams)); // 获取试验运行时间
|
|
|
|
+ // 防止试验运行时间太长,导致查询不到数据(3个月*30天*24小时*60分钟*60秒 = 7,776,000)
|
|
|
|
+ // syyxsj = syyxsj < 7776000 ? syyxsj : 7776000;
|
|
|
|
+
|
|
|
|
+ // 开始时间
|
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
|
+ calendar.setTime(now); // 设置当前的时间戳
|
|
|
|
+ // calendar.add(Calendar.SECOND, -syyxsj);
|
|
|
|
+ // Date startTime = calendar.getTime(); // 试验开始时间(也是 全程曲线开始时间)
|
|
|
|
+ GuanTest guanTest = guanTestMapper.selectTop1Test();
|
|
|
|
+ startTime = startTime == null ? guanTest.getStarttime() : startTime; // 试验开始时间(也是 全程曲线开始时间)
|
|
|
|
+ Integer syyxsj = Integer.parseInt(((now.getTime() - startTime.getTime()) / 1000) + "");
|
|
|
|
+ Date realityTime = null; // 实时曲线开始时间
|
|
|
|
+
|
|
|
|
+ for (GuanDashboardParam param : dashboardParamList) {
|
|
|
|
+ // 没有点位名
|
|
|
|
+ if (param.getTagName() == null || "".equals(param.getTagName())) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ if (!param.getParamName().equals("辐射强度值-全程") && !param.getParamName().equals("湿度实值-全程") &&
|
|
|
|
+ !param.getParamName().equals("温度实值-全程")) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ JSONObject jo = null;
|
|
|
|
+ CurveDTO curve = new CurveDTO();
|
|
|
|
+
|
|
|
|
+ // 2 获取 全程曲线 参数
|
|
|
|
+ curve.setType("全程");
|
|
|
|
+ // 2.1 计算每笔数据之间隔时间(设x = 参数定义的间隔时间,y = 间隔天数,计算公式:x + x * y)
|
|
|
|
+ qcIntervals = param.getIntervals() == 0 || param.getIntervals() == null ? 1 : param.getIntervals();
|
|
|
|
+ LocalDate startLocalDate = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
|
+ LocalDate endLocalDate = now.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
|
+ Long day = ChronoUnit.DAYS.between(startLocalDate, endLocalDate);
|
|
|
|
+ qcIntervals = qcIntervals + qcIntervals * (Integer.parseInt(day.toString()));
|
|
|
|
+
|
|
|
|
+ // 2.2 获取记录条数
|
|
|
|
+ if (qcRecord == null) {
|
|
|
|
+ qcRecord = Integer.parseInt((ChronoUnit.MINUTES.between(
|
|
|
|
+ LocalDateTime.parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(startTime).replace(" ", "T")),
|
|
|
|
+ LocalDateTime.parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now).replace(" ", "T"))
|
|
|
|
+ ) / qcIntervals) + "");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 2.3 组合参数
|
|
|
|
+ jo = generateDataLogObject(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(startTime),
|
|
|
|
+ param.getIntervaltype() == null || "".equals(param.getIntervaltype()) ? "M" : param.getIntervaltype(),
|
|
|
|
+ qcIntervals,
|
|
|
|
+ qcRecord,
|
|
|
|
+ param.getDatatype() == null || "".equals(param.getDatatype()) ? "0" : param.getDatatype(),
|
|
|
|
+ param.getTagName());
|
|
|
|
+
|
|
|
|
+ // 获取信息
|
|
|
|
+ JSONObject dataLog = GetDataLog(jo);
|
|
|
|
+ curve.setName(param.getParamName());
|
|
|
|
+ if (dataLog.getJSONArray("DataLog").size() > 0) {
|
|
|
|
+ List<String> values = dataLog.getJSONArray("DataLog").getJSONObject(0).getJSONArray("Values");
|
|
|
|
+ List<CurveSubDTO> subList = new ArrayList<>();
|
|
|
|
+ if (values != null && values.size() > 0) {
|
|
|
|
+ for (String value : values) {
|
|
|
|
+ CurveSubDTO sub = new CurveSubDTO();
|
|
|
|
+ sub.setTagvalue(value);
|
|
|
|
+ subList.add(sub);
|
|
}
|
|
}
|
|
- list.add(logObj);
|
|
|
|
}
|
|
}
|
|
|
|
+ curve.setSubList(subList);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ curve.setSubList(null);
|
|
}
|
|
}
|
|
|
|
+ curveList.add(curve);
|
|
|
|
+ }
|
|
|
|
+ // 设置全程曲线时间分布
|
|
|
|
+ genTime(startTime, now, qcIntervals, "MM-dd HH:mm", curveList, "全程");
|
|
|
|
+
|
|
|
|
+ return curveList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取实时曲线-当前
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public List<CurveDTO> getIncrementRealtimeCurve() {
|
|
|
|
+ // 获取大屏参数设置
|
|
|
|
+ GuanDashboardParam paramat = new GuanDashboardParam();
|
|
|
|
+ paramat.setStatus("1"); // 状态为启用
|
|
|
|
+ paramat.setIflog("Y"); // 需要获取历史记录
|
|
|
|
+ List<GuanDashboardParam> dashboardParamList = dashboardParamMapper.selectAllDashboardParam(paramat);
|
|
|
|
+ if (dashboardParamList == null || dashboardParamList.size() < 1) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
|
|
- // 获取实时曲线时间分布
|
|
|
|
- List<String> stimes = genTime(realityTime, now, ssIntervals, "HH:mm");
|
|
|
|
- JSONObject stimeObject = new JSONObject();
|
|
|
|
- stimeObject.put("Name", "实时曲线-时间分布");
|
|
|
|
- stimeObject.put("Values", stimes);
|
|
|
|
- list.add(stimeObject);
|
|
|
|
-
|
|
|
|
- // 获取全程曲线时间分布
|
|
|
|
- List<String> qtimes = genTime(startTime, now, qcIntervals, "MM-dd HH:mm");
|
|
|
|
- JSONObject qtimeObject = new JSONObject();
|
|
|
|
- qtimeObject.put("Name", "全程曲线-时间分布");
|
|
|
|
- qtimeObject.put("Values", qtimes);
|
|
|
|
- list.add(qtimeObject);
|
|
|
|
|
|
+ // 组合参数信息
|
|
|
|
+ List<WaLogDTO> tags = new ArrayList<>();
|
|
|
|
+ for (GuanDashboardParam param : dashboardParamList) {
|
|
|
|
+ // 没有点位名
|
|
|
|
+ if (param.getTagName() == null || "".equals(param.getTagName())) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ // 不是实时曲线设置
|
|
|
|
+ if (!param.getParamName().equals("辐射强度值-实时") && !param.getParamName().equals("湿度实值-实时") &&
|
|
|
|
+ !param.getParamName().equals("温度实值-实时")) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ WaLogDTO tag = new WaLogDTO(param.getTagName());
|
|
|
|
+ tags.add(tag);
|
|
}
|
|
}
|
|
- else {
|
|
|
|
|
|
+
|
|
|
|
+ JSONObject waparams = generateGetObject(tags);
|
|
|
|
+ JSONObject jsonObject = getTagNameValuesNoAnalysis(waparams);
|
|
|
|
+ JSONArray resArray = jsonObject.getJSONArray("Values");
|
|
|
|
+ List<CurveDTO> curveList = new ArrayList<>();
|
|
|
|
+ if (resArray != null && resArray.size() > 0) {
|
|
|
|
+ for (Integer i = 0; i < resArray.size(); i++) {
|
|
|
|
+ JSONObject res = resArray.getJSONObject(i);
|
|
|
|
+ CurveDTO curve = new CurveDTO();
|
|
|
|
+ curve.setType("实时");
|
|
|
|
+ curve.setName(res.get("Name").toString());
|
|
|
|
+
|
|
|
|
+ List<CurveSubDTO> subList = new ArrayList<>();
|
|
|
|
+ CurveSubDTO sub = new CurveSubDTO();
|
|
|
|
+ sub.setLogtime(new Date());
|
|
|
|
+
|
|
|
|
+ sub.setTranstime(new SimpleDateFormat("HH:mm").format(new Date()));
|
|
|
|
+ sub.setTagvalue(res.get("Value").toString());
|
|
|
|
+ subList.add(sub);
|
|
|
|
+
|
|
|
|
+ curve.setSubList(subList);
|
|
|
|
+ curveList.add(curve);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return curveList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取全程曲线-当前
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public List<CurveDTO> getIncrementWholeCurve() {
|
|
|
|
+ // 获取大屏参数设置
|
|
|
|
+ GuanDashboardParam paramat = new GuanDashboardParam();
|
|
|
|
+ paramat.setStatus("1"); // 状态为启用
|
|
|
|
+ paramat.setIflog("Y"); // 需要获取历史记录
|
|
|
|
+ List<GuanDashboardParam> dashboardParamList = dashboardParamMapper.selectAllDashboardParam(paramat);
|
|
|
|
+ if (dashboardParamList == null || dashboardParamList.size() < 1) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
- return list;
|
|
|
|
|
|
+
|
|
|
|
+ // 组合参数信息
|
|
|
|
+ List<WaLogDTO> tags = new ArrayList<>();
|
|
|
|
+ for (GuanDashboardParam param : dashboardParamList) {
|
|
|
|
+ // 没有点位名
|
|
|
|
+ if (param.getTagName() == null || "".equals(param.getTagName())) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ // 不是实时曲线设置
|
|
|
|
+ if (!param.getParamName().equals("辐射强度值-全程") && !param.getParamName().equals("湿度实值-全程") &&
|
|
|
|
+ !param.getParamName().equals("温度实值-全程")) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ WaLogDTO tag = new WaLogDTO(param.getTagName());
|
|
|
|
+ tags.add(tag);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ JSONObject waparams = generateGetObject(tags);
|
|
|
|
+ JSONObject jsonObject = getTagNameValuesNoAnalysis(waparams);
|
|
|
|
+ JSONArray resArray = jsonObject.getJSONArray("Values");
|
|
|
|
+ List<CurveDTO> curveList = new ArrayList<>();
|
|
|
|
+ if (resArray != null && resArray.size() > 0) {
|
|
|
|
+ for (Integer i = 0; i < resArray.size(); i++) {
|
|
|
|
+ JSONObject res = resArray.getJSONObject(i);
|
|
|
|
+ CurveDTO curve = new CurveDTO();
|
|
|
|
+ curve.setType("实时");
|
|
|
|
+ curve.setName(res.get("Name").toString());
|
|
|
|
+
|
|
|
|
+ List<CurveSubDTO> subList = new ArrayList<>();
|
|
|
|
+ CurveSubDTO sub = new CurveSubDTO();
|
|
|
|
+ sub.setLogtime(new Date());
|
|
|
|
+
|
|
|
|
+ sub.setTranstime(new SimpleDateFormat("HH:mm").format(new Date()));
|
|
|
|
+ sub.setTagvalue(res.get("Value").toString());
|
|
|
|
+ subList.add(sub);
|
|
|
|
+
|
|
|
|
+ curve.setSubList(subList);
|
|
|
|
+ curveList.add(curve);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return curveList;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 生成实时曲线需要的时间
|
|
|
|
|
|
+ * 生成曲线的时间
|
|
|
|
+ *
|
|
* @param startTime 开始时间
|
|
* @param startTime 开始时间
|
|
|
|
+ * @param endTime 结束时间
|
|
* @param intervals 间隔频率(分钟)
|
|
* @param intervals 间隔频率(分钟)
|
|
|
|
+ * @param dateformat 时间格式
|
|
|
|
+ * @param curveList 曲线信息
|
|
|
|
+ * @param type 曲线类型
|
|
|
|
+ * @return
|
|
*/
|
|
*/
|
|
- private List<String> genTime(Date startTime, Date endTime, Integer intervals, String dateformat) {
|
|
|
|
|
|
+ private void genTime(Date startTime, Date endTime, Integer intervals,
|
|
|
|
+ String dateformat, List<CurveDTO> curveList, String type) {
|
|
List<String> times = new ArrayList<>();
|
|
List<String> times = new ArrayList<>();
|
|
-
|
|
|
|
// 循环获取时间
|
|
// 循环获取时间
|
|
Calendar calendar = Calendar.getInstance();
|
|
Calendar calendar = Calendar.getInstance();
|
|
- while (startTime.before(endTime)) {
|
|
|
|
-// times.add(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(startTime));
|
|
|
|
- times.add(new SimpleDateFormat(dateformat).format(startTime));
|
|
|
|
- // 设置当前的时间戳
|
|
|
|
- calendar.setTime(startTime);
|
|
|
|
- calendar.add(Calendar.MINUTE, intervals);
|
|
|
|
- startTime = calendar.getTime();
|
|
|
|
- }
|
|
|
|
|
|
|
|
- return times;
|
|
|
|
|
|
+ if (curveList != null && curveList.size() > 0) {
|
|
|
|
+ for (int i = 0; i < curveList.size(); i++) {
|
|
|
|
+ if (!type.equals(curveList.get(i).getType())) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ Date beginTime = (Date) startTime.clone();
|
|
|
|
+
|
|
|
|
+ for (int j = 0; j < curveList.get(i).getSubList().size(); j++) {
|
|
|
|
+ curveList.get(i).getSubList().get(j).setLogtime(beginTime);
|
|
|
|
+ curveList.get(i).getSubList().get(j).setTranstime(new SimpleDateFormat(dateformat).format(beginTime));
|
|
|
|
+ // 设置当前的时间戳
|
|
|
|
+ calendar.setTime(beginTime);
|
|
|
|
+ calendar.add(Calendar.MINUTE, intervals);
|
|
|
|
+ beginTime = calendar.getTime();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
//endregion
|
|
//endregion
|
|
|
|
|
|
- // region <<获取预制曲线>>
|
|
|
|
|
|
+ // region <<根据大屏参数设置,获取预制曲线>>
|
|
/**
|
|
/**
|
|
* 获取预制曲线
|
|
* 获取预制曲线
|
|
* @return
|
|
* @return
|
|
@@ -1116,11 +1314,21 @@ public class WebAccessService {
|
|
|
|
|
|
// region <<获取报警信息>>
|
|
// region <<获取报警信息>>
|
|
/**
|
|
/**
|
|
|
|
+ * 获取24小时内报警信息
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public List<GuanRAlarm> getAlarm24h() {
|
|
|
|
+ List<GuanRAlarm> alarmList = guanRAlarmService.selectAlarm24h(false);
|
|
|
|
+
|
|
|
|
+ return alarmList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
* 获取最新一条报警信息
|
|
* 获取最新一条报警信息
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
public GuanRAlarm getLastAlarm() {
|
|
public GuanRAlarm getLastAlarm() {
|
|
- GuanRAlarm rAlarm = guanRAlarmMapper.selectTop1Alarm();
|
|
|
|
|
|
+ GuanRAlarm rAlarm = guanRAlarmService.selectTop1Alarm();
|
|
|
|
|
|
return rAlarm;
|
|
return rAlarm;
|
|
}
|
|
}
|
|
@@ -1169,12 +1377,12 @@ public class WebAccessService {
|
|
//region <<组合获取到的大屏展示数据>>
|
|
//region <<组合获取到的大屏展示数据>>
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 组合获取到的大屏展示数据
|
|
|
|
|
|
+ * 获取设备实时数据
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- public String organizeDashData() {
|
|
|
|
|
|
+ public String loadRealtimeData() {
|
|
|
|
|
|
- log.info(String.format(" 获取设备实时值! 时间:" + DateUtils.getTimestamp()));
|
|
|
|
|
|
+ log.info(String.format(" 获取设备实时信息! 开始时间 ↓↓↓↓↓↓↓↓↓↓:" + DateUtils.getTimestamp()));
|
|
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
|
|
|
@@ -1182,19 +1390,252 @@ public class WebAccessService {
|
|
JSONArray tagArray = getDashboardTagNameValues();
|
|
JSONArray tagArray = getDashboardTagNameValues();
|
|
jsonObject.put("设备实时值", tagArray);
|
|
jsonObject.put("设备实时值", tagArray);
|
|
|
|
|
|
- // 设备历史值
|
|
|
|
- JSONArray logArray = getDashboardDataLog(null);
|
|
|
|
- jsonObject.put("设备历史值", logArray);
|
|
|
|
|
|
+ log.info(String.format(" 获取设备实时信息! 结束时间 ↑↑↑↑↑↑↑↑↑↑:" + DateUtils.getTimestamp()));
|
|
|
|
+
|
|
|
|
+ return jsonObject.toString();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取曲线数据
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public String loadCurveData() {
|
|
|
|
+
|
|
|
|
+ log.info(String.format(" 获取设备曲线信息! 开始时间 ↓↓↓↓↓↓↓↓↓↓:" + DateUtils.getTimestamp()));
|
|
|
|
+
|
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
|
+
|
|
|
|
+ // 实时曲线在缓存中不存在,则获取实时曲线并存入缓存中,否则做增量添加
|
|
|
|
+ if (!redisUtil.hasKey(GuanCommonConstant.GUAN_REALTIME_CURVE)) {
|
|
|
|
+ List<CurveDTO> realtimeCrveList = getRealtimeCurve(null);
|
|
|
|
+ jsonObject.put("实时曲线", realtimeCrveList.toString());
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_REALTIME_CURVE, realtimeCrveList);
|
|
|
|
+ }
|
|
|
|
+ // 增量添加
|
|
|
|
+ else {
|
|
|
|
+ List<CurveDTO> incrementRealtimeCurveList = getIncrementRealtimeCurve();
|
|
|
|
+ List<CurveDTO> realtimeCrveList = (List<CurveDTO>) redisUtil.get(GuanCommonConstant.GUAN_REALTIME_CURVE);
|
|
|
|
+ // 将获取的增加数据增加到实时曲线的列表中
|
|
|
|
+ if (realtimeCrveList != null && realtimeCrveList.size() > 0) {
|
|
|
|
+ for (int i = 0; i < realtimeCrveList.size(); i++) {
|
|
|
|
+ String name = realtimeCrveList.get(i).getName();
|
|
|
|
+ List<CurveDTO> subCurveList = incrementRealtimeCurveList.stream()
|
|
|
|
+ .filter(p -> p.getName().equals(name)).collect(Collectors.toList());
|
|
|
|
+ if (subCurveList != null && subCurveList.size() > 0 &&
|
|
|
|
+ subCurveList.get(0).getSubList() != null && subCurveList.get(0).getSubList().size() > 0) {
|
|
|
|
+ realtimeCrveList.get(i).getSubList().add(subCurveList.get(0).getSubList().get(0));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ Collections.copy(incrementRealtimeCurveList, realtimeCrveList);
|
|
|
|
+ }
|
|
|
|
+ jsonObject.put("实时曲线", realtimeCrveList.toString());
|
|
|
|
+ // 重新缓存实时曲线
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_REALTIME_CURVE, realtimeCrveList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 全程曲线在缓存中不存在,则获取全程曲线并存入缓存中,否则做增量添加
|
|
|
|
+ if (!redisUtil.hasKey(GuanCommonConstant.GUAN_WHOLE_CURE)) {
|
|
|
|
+ List<CurveDTO> wholeCrveList = getWholeCurve(null);
|
|
|
|
+ jsonObject.put("全程曲线", wholeCrveList.toString());
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_WHOLE_CURE, wholeCrveList);
|
|
|
|
+ }
|
|
|
|
+ // 增量添加
|
|
|
|
+ else {
|
|
|
|
+ List<CurveDTO> incrementWholeCurveList = getIncrementWholeCurve();
|
|
|
|
+ List<CurveDTO> wholeCrveList = (List<CurveDTO>) redisUtil.get(GuanCommonConstant.GUAN_WHOLE_CURE);
|
|
|
|
+ // 将获取的增加数据增加到全程曲线的列表中
|
|
|
|
+ if (wholeCrveList != null && wholeCrveList.size() > 0) {
|
|
|
|
+ for (int i = 0; i < wholeCrveList.size(); i++) {
|
|
|
|
+ String name = wholeCrveList.get(i).getName();
|
|
|
|
+ List<CurveDTO> subCurveList = incrementWholeCurveList.stream()
|
|
|
|
+ .filter(p -> p.getName().equals(name)).collect(Collectors.toList());
|
|
|
|
+ if (subCurveList != null && subCurveList.size() > 0 &&
|
|
|
|
+ subCurveList.get(0).getSubList() != null && subCurveList.get(0).getSubList().size() > 0) {
|
|
|
|
+ wholeCrveList.get(i).getSubList().add(subCurveList.get(0).getSubList().get(0));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ Collections.copy(incrementWholeCurveList, wholeCrveList);
|
|
|
|
+ }
|
|
|
|
+ jsonObject.put("全程曲线", wholeCrveList.toString());
|
|
|
|
+ // 重新缓存全程曲线
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_WHOLE_CURE, wholeCrveList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 预制曲线在缓存中不存在,则获取预制曲线并存入缓存中,否则不做处理
|
|
|
|
+ if (!redisUtil.hasKey(GuanCommonConstant.GUAN_PREPARE_CURVE)) {
|
|
|
|
+ List<String> duans = new ArrayList<>();
|
|
|
|
+ List<CirculateDTO> yzqxList = getYzcx(duans);
|
|
|
|
+ jsonObject.put("预制曲线", yzqxList);
|
|
|
|
+ jsonObject.put("预制曲线线段", duans);
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_PREPARE_CURVE, yzqxList);
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_PREPARE_CURVE_SECTION, duans);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 最近24H报警信息在缓存中不存在,则获取信息并存入缓存中,否则不做处理
|
|
|
|
+ if (!redisUtil.hasKey(GuanCommonConstant.GUAN_ALARMS_24H)) {
|
|
|
|
+ List<GuanRAlarm> alarmList = getAlarm24h();
|
|
|
|
+ jsonObject.put("最近24H报警信息", alarmList.toString());
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_ALARMS_24H, alarmList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ log.info(String.format(" 获取设备曲线信息! 结束时间 ↑↑↑↑↑↑↑↑↑↑:" + DateUtils.getTimestamp()));
|
|
|
|
+
|
|
|
|
+ return jsonObject.toString();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取曲线数据 增量
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public String loadIncrementCurveData() {
|
|
|
|
+
|
|
|
|
+ log.info(String.format(" 获取设备曲线信息(增量)! 开始时间 ↓↓↓↓↓↓↓↓↓↓:" + DateUtils.getTimestamp()));
|
|
|
|
+
|
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
|
+
|
|
|
|
+ // 实时曲线
|
|
|
|
+ List<CurveDTO> incrementRealtimeCurveList = getIncrementRealtimeCurve();
|
|
|
|
+ List<CurveDTO> realtimeCrveList = null;
|
|
|
|
+ if (redisUtil.hasKey(GuanCommonConstant.GUAN_REALTIME_CURVE)) {
|
|
|
|
+ realtimeCrveList = (List<CurveDTO>) redisUtil.get(GuanCommonConstant.GUAN_REALTIME_CURVE);
|
|
|
|
+ }
|
|
|
|
+ // 将获取的增加数据增加到实时曲线的列表中
|
|
|
|
+ if (realtimeCrveList != null && realtimeCrveList.size() > 0) {
|
|
|
|
+ for (int i = 0; i < realtimeCrveList.size(); i++) {
|
|
|
|
+ String name = realtimeCrveList.get(i).getName();
|
|
|
|
+ List<CurveDTO> subCurveList = incrementRealtimeCurveList.stream()
|
|
|
|
+ .filter(p -> p.getName().equals(name)).collect(Collectors.toList());
|
|
|
|
+ if (subCurveList != null && subCurveList.size() > 0 &&
|
|
|
|
+ subCurveList.get(0).getSubList() != null && subCurveList.get(0).getSubList().size() > 0) {
|
|
|
|
+ realtimeCrveList.get(i).getSubList().add(subCurveList.get(0).getSubList().get(0));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ Collections.copy(incrementRealtimeCurveList, realtimeCrveList);
|
|
|
|
+ }
|
|
|
|
+ // 重新缓存实时曲线
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_REALTIME_CURVE, realtimeCrveList);
|
|
|
|
+ // 返回增量信息
|
|
|
|
+ jsonObject.put("实时曲线", incrementRealtimeCurveList.toString());
|
|
|
|
+
|
|
|
|
+ // 全程曲线
|
|
|
|
+ List<CurveDTO> incrementWholeCurveList = getIncrementWholeCurve();
|
|
|
|
+ List<CurveDTO> wholeCrveList = null;
|
|
|
|
+ if (redisUtil.hasKey(GuanCommonConstant.GUAN_WHOLE_CURE)) {
|
|
|
|
+ wholeCrveList = (List<CurveDTO>) redisUtil.get(GuanCommonConstant.GUAN_WHOLE_CURE);
|
|
|
|
+ }
|
|
|
|
+ // 将获取的增加数据增加到全程曲线的列表中
|
|
|
|
+ if (wholeCrveList != null && wholeCrveList.size() > 0) {
|
|
|
|
+ for (int i = 0; i < wholeCrveList.size(); i++) {
|
|
|
|
+ String name = wholeCrveList.get(i).getName();
|
|
|
|
+ List<CurveDTO> subCurveList = incrementWholeCurveList.stream()
|
|
|
|
+ .filter(p -> p.getName().equals(name)).collect(Collectors.toList());
|
|
|
|
+ if (subCurveList != null && subCurveList.size() > 0 &&
|
|
|
|
+ subCurveList.get(0).getSubList() != null && subCurveList.get(0).getSubList().size() > 0) {
|
|
|
|
+ wholeCrveList.get(i).getSubList().add(subCurveList.get(0).getSubList().get(0));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ Collections.copy(incrementWholeCurveList, wholeCrveList);
|
|
|
|
+ }
|
|
|
|
+ // 返回增量信息
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_WHOLE_CURE, wholeCrveList);
|
|
|
|
+ jsonObject.put("全程曲线", wholeCrveList.toString());
|
|
|
|
+
|
|
|
|
+ log.info(String.format(" 获取设备曲线信息(增量)! 结束时间 ↑↑↑↑↑↑↑↑↑↑:" + DateUtils.getTimestamp()));
|
|
|
|
+
|
|
|
|
+ return jsonObject.toString();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 缓存数据
|
|
|
|
+ * @param isRefresh 是否强制刷新
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public void loadCacheData(Boolean isRefresh) {
|
|
|
|
+
|
|
|
|
+ log.info(String.format("缓存信息! 开始时间 ↓↓↓↓↓↓↓↓↓↓:" + DateUtils.getTimestamp()));
|
|
|
|
|
|
- // 最新一条报警信息
|
|
|
|
- GuanRAlarm rAlarm = getLastAlarm();
|
|
|
|
- jsonObject.put("最新一条报警信息", rAlarm);
|
|
|
|
|
|
+ // 1 获取设备状态
|
|
|
|
+ if (!redisUtil.hasKey(GuanCommonConstant.GUAN_EQUIPMENT_STATUS) || isRefresh) {
|
|
|
|
+ GuanAnachglog anachglog = anachglogService.selectTop1Anachglog(true);
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_EQUIPMENT_STATUS, anachglog);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 重新获取预制曲线
|
|
|
|
+ if (!redisUtil.hasKey(GuanCommonConstant.GUAN_PREPARE_CURVE) || isRefresh) {
|
|
|
|
+ List<String> duans = new ArrayList<>();
|
|
|
|
+ List<CirculateDTO> yzqxList = getYzcx(duans);
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_PREPARE_CURVE, yzqxList);
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_PREPARE_CURVE_SECTION, duans);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 重新获取实时曲线
|
|
|
|
+ if (!redisUtil.hasKey(GuanCommonConstant.GUAN_REALTIME_CURVE) || isRefresh) {
|
|
|
|
+ List<CurveDTO> realtimeCrveList = getRealtimeCurve(null);
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_REALTIME_CURVE, realtimeCrveList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 重新获取全程曲线
|
|
|
|
+ if (!redisUtil.hasKey(GuanCommonConstant.GUAN_WHOLE_CURE) || isRefresh) {
|
|
|
|
+ List<CurveDTO> wholeCrveList = getWholeCurve(null);
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_WHOLE_CURE, wholeCrveList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 重新获取当前时间之前24小时的报警信息
|
|
|
|
+ if (!redisUtil.hasKey(GuanCommonConstant.GUAN_ALARMS_24H) || isRefresh) {
|
|
|
|
+ List<GuanRAlarm> alarmList = getAlarm24h();
|
|
|
|
+ redisUtil.set(GuanCommonConstant.GUAN_ALARMS_24H, alarmList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ log.info(String.format("缓存信息! 结束时间 ↑↑↑↑↑↑↑↑↑↑:" + DateUtils.getTimestamp()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 前端页面首次加载,获取大屏展示数据
|
|
|
|
+ * 只获取报警信息、预制曲线、全程曲线、实时曲线,其它信息不获取
|
|
|
|
+ *
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public String firstLoadData() {
|
|
|
|
+
|
|
|
|
+ log.info(String.format(" 前端首次加载值! 开始时间 ↓↓↓↓↓↓↓↓↓↓:" + DateUtils.getTimestamp()));
|
|
|
|
+
|
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
|
+
|
|
|
|
+ // 实时曲线 从redis中获取
|
|
|
|
+ if (redisUtil.hasKey(GuanCommonConstant.GUAN_REALTIME_CURVE)) {
|
|
|
|
+ List<CurveDTO> realtimeCrveList = (List<CurveDTO>) redisUtil.get(GuanCommonConstant.GUAN_REALTIME_CURVE);
|
|
|
|
+ jsonObject.put("实时曲线", realtimeCrveList.toString());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 全程曲线 从redis中获取
|
|
|
|
+ if (redisUtil.hasKey(GuanCommonConstant.GUAN_WHOLE_CURE)) {
|
|
|
|
+ List<CurveDTO> wholeCrveList = (List<CurveDTO>) redisUtil.get(GuanCommonConstant.GUAN_WHOLE_CURE);
|
|
|
|
+ jsonObject.put("全程曲线", wholeCrveList.toString());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 预制曲线 从redis中获取
|
|
|
|
+ if (redisUtil.hasKey(GuanCommonConstant.GUAN_PREPARE_CURVE)) {
|
|
|
|
+ List<String> duans = (List<String>) redisUtil.get(GuanCommonConstant.GUAN_PREPARE_CURVE);
|
|
|
|
+ List<CirculateDTO> yzqxList = (List<CirculateDTO>) redisUtil.get(GuanCommonConstant.GUAN_PREPARE_CURVE_SECTION);
|
|
|
|
+ jsonObject.put("预制曲线", yzqxList);
|
|
|
|
+ jsonObject.put("预制曲线线段", duans);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 最近24H报警信息 从redis中获取
|
|
|
|
+ if (redisUtil.hasKey(GuanCommonConstant.GUAN_ALARMS_24H)) {
|
|
|
|
+ List<GuanRAlarm> alarmList = (List<GuanRAlarm>) redisUtil.get(GuanCommonConstant.GUAN_ALARMS_24H);
|
|
|
|
+ jsonObject.put("最近24H报警信息", alarmList.toString());
|
|
|
|
+ }
|
|
|
|
|
|
- // 预制曲线
|
|
|
|
- List<String> duans = new ArrayList<>();
|
|
|
|
- List<CirculateDTO> yzqxList = getYzcx(duans);
|
|
|
|
- jsonObject.put("预制曲线", yzqxList);
|
|
|
|
- jsonObject.put("预制曲线线段", duans);
|
|
|
|
|
|
+ log.info(String.format(" 前端首次加载值! 结束时间 ↑↑↑↑↑↑↑↑↑↑:" + DateUtils.getTimestamp()));
|
|
|
|
|
|
return jsonObject.toString();
|
|
return jsonObject.toString();
|
|
}
|
|
}
|