Commit 216fc36f authored by tangwei's avatar tangwei

解决冲突

parents a0ecae62 c82d315d
package com.yeejoin.amos.api.householdapi.Utils;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.TimeZone;
public class CalendarAdjust {
/**
* 获取指定某一天的开始时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public static Long getDailyStartTime(Long timeStamp, String timeZone) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
calendar.setTimeInMillis(timeStamp);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTimeInMillis();
}
/**
* 获取指定某一天的结束时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public static Long getDailyEndTime(Long timeStamp, String timeZone) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
calendar.setTimeInMillis(timeStamp);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTimeInMillis();
}
/**
* 获取当月开始时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public static Long getMonthStartTime(Long timeStamp, String timeZone) {
Calendar calendar = Calendar.getInstance();// 获取当前日期
calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
calendar.setTimeInMillis(timeStamp);
calendar.add(Calendar.YEAR, 0);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTimeInMillis();
}
/**
* 获取当月的结束时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public static Long getMonthEndTime(Long timeStamp, String timeZone) {
Calendar calendar = Calendar.getInstance();// 获取当前日期
calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
calendar.setTimeInMillis(timeStamp);
calendar.add(Calendar.YEAR, 0);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月最后一天
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTimeInMillis();
}
/**
* 获取当年的开始时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public static Long getYearStartTime(Long timeStamp, String timeZone) {
Calendar calendar = Calendar.getInstance();// 获取当前日期
calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
calendar.setTimeInMillis(timeStamp);
calendar.add(Calendar.YEAR, 0);
calendar.add(Calendar.DATE, 0);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_YEAR, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTimeInMillis();
}
/**
* 获取当年的最后时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public static Long getYearEndTime(Long timeStamp, String timeZone) {
Calendar calendar = Calendar.getInstance();// 获取当前日期
calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
calendar.setTimeInMillis(timeStamp);
int year = calendar.get(Calendar.YEAR);
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
calendar.roll(Calendar.DAY_OF_YEAR, -1);
return calendar.getTimeInMillis();
}
/**
* 时间戳转字符串
*
* @param timestamp 毫秒级时间戳
* @param zoneId 如 GMT+8或UTC+08:00
* @return
*/
public static String timestampToStr(long timestamp, String zoneId) {
ZoneId timezone = ZoneId.of(zoneId);
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), timezone);
return localDateTime.toString();
}
public static void main(String[] args) {
Long currentTime = System.currentTimeMillis();
System.out.println("Current Time : " + currentTime + " = " + timestampToStr(currentTime, "GMT+8"));
Long dailyStart = getDailyStartTime(currentTime, "GMT+8:00");
Long dailyEnd = getDailyEndTime(currentTime, "GMT+8:00");
Long monthStart = getMonthStartTime(currentTime, "GMT+8:00");
Long monthEnd = getMonthEndTime(currentTime, "GMT+8:00");
Long yearStart = getYearStartTime(currentTime, "GMT+8:00");
Long yearEnd = getYearEndTime(currentTime, "GMT+8:00");
System.out.println("Daily Start : " + dailyStart + " = " + timestampToStr(dailyStart, "GMT+8") + " Daily End : " + dailyEnd + " = " + timestampToStr(dailyEnd, "GMT+8"));
System.out.println("Month Start : " + monthStart + " = " + timestampToStr(monthStart, "GMT+8") + " Month End : " + monthEnd + " = " + timestampToStr(monthEnd, "GMT+8"));
System.out.println("Year Start : " + yearStart + " = " + timestampToStr(yearStart, "GMT+8") + " Year End : " + yearEnd + " = " + timestampToStr(yearEnd, "GMT+8"));
}
}
\ No newline at end of file
...@@ -207,6 +207,7 @@ public class ImasterUtils { ...@@ -207,6 +207,7 @@ public class ImasterUtils {
if (jsonArray.size() != 0) { if (jsonArray.size() != 0) {
for( int i=0; i<jsonArray.size();i++ ) { for( int i=0; i<jsonArray.size();i++ ) {
JSONObject jsonObject1 = (JSONObject) jsonArray.get(i); JSONObject jsonObject1 = (JSONObject) jsonArray.get(i);
if(jsonObject1.get("dataItemMap") != null) {
JSONObject jsonObject2 = (JSONObject)jsonObject1.get("dataItemMap"); JSONObject jsonObject2 = (JSONObject)jsonObject1.get("dataItemMap");
if(jsonObject1.get("sn") != null) { if(jsonObject1.get("sn") != null) {
jsonObject2.put("inverterId", jsonObject1.get("sn").toString()); jsonObject2.put("inverterId", jsonObject1.get("sn").toString());
...@@ -214,11 +215,15 @@ public class ImasterUtils { ...@@ -214,11 +215,15 @@ public class ImasterUtils {
if(jsonObject1.get("stationCode") != null) { if(jsonObject1.get("stationCode") != null) {
jsonObject2.put("stationCode", jsonObject1.get("stationCode").toString()); jsonObject2.put("stationCode", jsonObject1.get("stationCode").toString());
} }
if(jsonObject1.get("collectTime") != null) {
jsonObject2.put("collectTime", jsonObject1.get("collectTime").toString());
}
jsonArrayRet.add(jsonObject2); jsonArrayRet.add(jsonObject2);
} }
} }
} }
}
return jsonArrayRet; return jsonArrayRet;
} }
......
...@@ -15,6 +15,13 @@ public class ImasterConstant { ...@@ -15,6 +15,13 @@ public class ImasterConstant {
} }
}; };
public static final HashMap<String, String> inverterStaus = new HashMap<String, String>() {
{
put("0", "离线");
put("1", "在线");
}
};
public static final HashMap<String, String> alarmstatus = new HashMap<String, String>() { public static final HashMap<String, String> alarmstatus = new HashMap<String, String>() {
{ {
put("1", "未处理"); put("1", "未处理");
...@@ -41,12 +48,17 @@ public class ImasterConstant { ...@@ -41,12 +48,17 @@ public class ImasterConstant {
public static String requestGET="GET"; public static String requestGET="GET";
public static String stationListUrl="/thirdData/stations"; public static String stationListUrl="/thirdData/stations";
public static String stationDetailUrl = "/thirdData/getStationRealKpi"; public static String stationDetailUrl = "/thirdData/getStationRealKpi";
public static String stationDetailMonthUrl = "/thirdData/getKpiStationMonth";
public static String stationDetailYearUrl = "/thirdData/getKpiStationYear";
public static String collectorListUrl = "/thirdData/getDevList"; public static String collectorListUrl = "/thirdData/getDevList";
public static String collectorDetailUrl = "/thirdData/getDevRealKpi"; public static String collectorDetailUrl = "/thirdData/getDevRealKpi";
public static String collectorDetailMonthUrl = "/thirdData/getDevKpiMonth";
public static String collectorDetailYearUrl = "/thirdData/getDevKpiYear";
public static String alarmListUrl = "/thirdData/getAlarmList"; public static String alarmListUrl = "/thirdData/getAlarmList";
public static String resovleRule_data_page_records = "data"; public static String resovleRule_data_page_records = "data";
public static String resovle_rows="rows"; public static String resovle_rows="rows";
public static int devTypeC=62; public static int devTypeC=62;
public static int devTypeI=1; public static int devTypeI=1;
public static Double kwhToMwh = 0.0001;
} }
...@@ -114,8 +114,8 @@ public class HouseholdTestController { ...@@ -114,8 +114,8 @@ public class HouseholdTestController {
@ApiOperation(httpMethod = "POST", value = "科士达", notes = "科士达") @ApiOperation(httpMethod = "POST", value = "科士达", notes = "科士达")
public void ksolarnew() throws IOException { public void ksolarnew() throws IOException {
// kSolarDataAcquisitionService.stationList(); // kSolarDataAcquisitionService.stationList();
kSolarDataAcquisitionService.stationDetail();
kSolarDataAcquisitionService.stationList(); kSolarDataAcquisitionService.stationList();
kSolarDataAcquisitionService.stationDetail();
kSolarDataAcquisitionService.collectorList(); kSolarDataAcquisitionService.collectorList();
kSolarDataAcquisitionService.collectorDetail(); kSolarDataAcquisitionService.collectorDetail();
//// goLangDataAcquisitionService.inverterList(); //// goLangDataAcquisitionService.inverterList();
...@@ -135,16 +135,10 @@ public class HouseholdTestController { ...@@ -135,16 +135,10 @@ public class HouseholdTestController {
@PostMapping(value = "/imasterNew") @PostMapping(value = "/imasterNew")
@ApiOperation(httpMethod = "POST", value = "北向", notes = "北向") @ApiOperation(httpMethod = "POST", value = "北向", notes = "北向")
public void imasterNew() throws IOException { public void imasterNew() throws IOException {
// imasterDataService.stationList(); imasterDataService.stationList();
// imasterDataService.stationDetail(); imasterDataService.stationDetail();
// imasterDataService.collectorList(); imasterDataService.collectorList();
// imasterDataService.inverterList(); imasterDataService.inverterList();
imasterDataService.inverterDetail(); imasterDataService.inverterDetail();
// goLangDataAcquisitionService.collectorList();
//// goLangDataAcquisitionService.inverterList();
// goLangDataAcquisitionService.collectorDetail();
// goLangDataAcquisitionService.inverterDetail();
// goLangDataAcquisitionService.inverAlramInfo();
} }
} }
...@@ -11,6 +11,7 @@ public class ImasterInverterList { ...@@ -11,6 +11,7 @@ public class ImasterInverterList {
private Long id; private Long id;
private String stationCode; private String stationCode;
private String stationName; private String stationName;
private String addr;
private String collectorSnCode; private String collectorSnCode;
private String devName; private String devName;
private String esnCode; private String esnCode;
......
...@@ -42,7 +42,7 @@ public class ImasterInverterListDetails { ...@@ -42,7 +42,7 @@ public class ImasterInverterListDetails {
Double pv11_u ; Double pv11_u ;
Double mppt_power ; Double mppt_power ;
Double pv13_u ; Double pv13_u ;
Double run_state ; int run_state ;
Double close_time ; Double close_time ;
Double pv19_i ; Double pv19_i ;
Double mppt_7_cap ; Double mppt_7_cap ;
......
package com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName(value = "imaster_inverter_details_month" ,autoResultMap = true)
public class ImasterInverterMonth {
private Long createdTime;
private String stationCode ;
private Double installed_capacity ; // 装机容量
private Double product_power; // 发电量
private Double power_profit ; // 发电收益
private String collectTime;
private String inverterId;
}
package com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName(value = "imaster_inverter_details_year" ,autoResultMap = true)
public class ImasterInverterYear {
private Long createdTime;
private String stationCode ;
private Double installed_capacity ; // 装机容量
private Double product_power; // 发电量
private Double power_profit ; // 发电收益
private String collectTime;
private String inverterId;
}
...@@ -9,16 +9,11 @@ public class ImasterStationDetailsMonth { ...@@ -9,16 +9,11 @@ public class ImasterStationDetailsMonth {
private Long createdTime; private Long createdTime;
private String stationCode ; private String stationCode ;
private Double installedCapacity ; private Double installed_capacity ; // 装机容量
private Double radiationIntensity; private Double inverter_power; // 逆变器发电量
private Double theoryPower ; private Double power_profit ; // 发电收益
private Double performanceRatio ; private Double reduction_total_coal ; // 标准煤节省量
private Double inverterPower ; private Double perpower_ratio ; /// 等效利用小时数
private Double ongridPower ; private Double reduction_total_co2 ; // 二氧化碳减排量
private Double usePower ; private String collectTime;
private Double powerProfit ;
private Double perpowerRatio;
private Double reductionTotalCo2 ;
private Double reductionTotalCoal ;
private Double reductionTotalTree;
} }
...@@ -9,17 +9,12 @@ public class ImasterStationDetailsYear { ...@@ -9,17 +9,12 @@ public class ImasterStationDetailsYear {
private Long createdTime; private Long createdTime;
private String stationCode ; private String stationCode ;
private Double installedCapacity ; private Double installed_capacity ;
private Double radiationIntensity; private Double inverter_power;
private Double theoryPower ; private Double power_profit ;
private Double performanceRatio ; private Double reduction_total_coal ;
private Double inverterPower ; private Double perpower_ratio ;
private Double ongridPower ; private Double reduction_total_co2 ;
private Double usePower ; private String collectTime;
private Double powerProfit ;
private Double perpowerRatio;
private Double reductionTotalCo2 ;
private Double reductionTotalCoal ;
private Double reductionTotalTree;
} }
package com.yeejoin.amos.api.householdapi.face.orm.mapper.tdengine;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine.ImasterInverterMonth;
public interface ImasterInverterMonthMapper extends BaseMapper<ImasterInverterMonth> {
}
package com.yeejoin.amos.api.householdapi.face.orm.mapper.tdengine;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine.ImasterInverterYear;
public interface ImasterInverterYearMapper extends BaseMapper<ImasterInverterYear> {
}
package com.yeejoin.amos.api.householdapi.face.orm.mapper.tdengine;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine.ImasterStationDetailsMonth;
public interface ImasterStationMonthMapper extends BaseMapper<ImasterStationDetailsMonth> {
}
package com.yeejoin.amos.api.householdapi.face.orm.mapper.tdengine;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine.ImasterStationDetailsYear;
public interface ImasterStationYearMapper extends BaseMapper<ImasterStationDetailsYear> {
}
package com.yeejoin.amos.api.householdapi.face.service.impl; package com.yeejoin.amos.api.householdapi.face.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.api.householdapi.Utils.CalendarAdjust;
import com.yeejoin.amos.api.householdapi.Utils.ImasterUtils; import com.yeejoin.amos.api.householdapi.Utils.ImasterUtils;
import com.yeejoin.amos.api.householdapi.constant.GoLangConstant; import com.yeejoin.amos.api.householdapi.constant.GoLangConstant;
import com.yeejoin.amos.api.householdapi.constant.ImasterConstant; import com.yeejoin.amos.api.householdapi.constant.ImasterConstant;
import com.yeejoin.amos.api.householdapi.face.dto.AlarmDto;
import com.yeejoin.amos.api.householdapi.face.dto.CollectorDetailDto;
import com.yeejoin.amos.api.householdapi.face.dto.ImasterAlarmDto; import com.yeejoin.amos.api.householdapi.face.dto.ImasterAlarmDto;
import com.yeejoin.amos.api.householdapi.face.dto.InverterDetailDto;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.hygf.JpCollector; import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.hygf.JpCollector;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.hygf.JpInverter; import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.hygf.JpInverter;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.hygf.JpInverterElectricity; import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.hygf.JpInverterElectricity;
...@@ -23,8 +21,7 @@ import com.yeejoin.amos.api.householdapi.face.orm.mapper.tdengine.*; ...@@ -23,8 +21,7 @@ import com.yeejoin.amos.api.householdapi.face.orm.mapper.tdengine.*;
import com.yeejoin.amos.api.householdapi.face.service.ImasterDataService; import com.yeejoin.amos.api.householdapi.face.service.ImasterDataService;
import com.yeejoin.amos.openapi.enums.PVProducerInfoEnum; import com.yeejoin.amos.openapi.enums.PVProducerInfoEnum;
import fastjson.JSON; import fastjson.JSON;
import org.apache.commons.lang.time.DateUtils;
import org.joda.time.DateTimeUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -64,6 +61,25 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -64,6 +61,25 @@ public class ImasterDataServiceImpl implements ImasterDataService {
@Autowired @Autowired
private ImasterStationDetailsMapper imasterStationDetailsMapper; private ImasterStationDetailsMapper imasterStationDetailsMapper;
//北向mapper
@Autowired
private ImasterInverterMonthMapper imasterInverterMonthMapper;
//北向mapper
@Autowired
private ImasterInverterYearMapper imasterInverterYearMapper;
//北向mapper
@Autowired
private ImasterStationMonthMapper imasterStationMonthMapper;
//北向mapper
@Autowired
private ImasterStationYearMapper imasterStationYearMapper;
//定时任务执行频率 当前为10分钟一次 //定时任务执行频率 当前为10分钟一次
private final String dataRequstScheduled = "0 0/60 * * * *"; private final String dataRequstScheduled = "0 0/60 * * * *";
...@@ -103,6 +119,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -103,6 +119,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
@Autowired @Autowired
JpInverterElectricityMapper jpInverterElectricityMapper; JpInverterElectricityMapper jpInverterElectricityMapper;
@Scheduled(cron = dataRequstScheduled) @Scheduled(cron = dataRequstScheduled)
@Override @Override
public void stationList() { public void stationList() {
...@@ -122,6 +139,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -122,6 +139,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
} }
} }
@Scheduled(cron = dataRequstScheduled) @Scheduled(cron = dataRequstScheduled)
@Override @Override
public void stationDetail() { public void stationDetail() {
...@@ -136,6 +154,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -136,6 +154,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
} }
HashMap<String, Object> requestInfo = new HashMap<>(); HashMap<String, Object> requestInfo = new HashMap<>();
requestInfo.put("stationCodes", stationList.stream().collect(Collectors.joining(","))); requestInfo.put("stationCodes", stationList.stream().collect(Collectors.joining(",")));
requestInfo.put("collectTime", System.currentTimeMillis());
String requestParaminfo = JSON.toJSONString(requestInfo); String requestParaminfo = JSON.toJSONString(requestInfo);
List<ImasterStationDetail> result = imasterUtils.getResPonseOther(ImasterConstant.stationDetailUrl, List<ImasterStationDetail> result = imasterUtils.getResPonseOther(ImasterConstant.stationDetailUrl,
GoLangConstant.requestPost, GoLangConstant.requestPost,
...@@ -143,24 +162,21 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -143,24 +162,21 @@ public class ImasterDataServiceImpl implements ImasterDataService {
ImasterConstant.resovleRule_data_page_records, ImasterConstant.resovleRule_data_page_records,
ImasterStationDetail.class ImasterStationDetail.class
); );
// List<ImasterStationDetail> result1 = imasterUtils.getResPonse(ImasterConstant.stationDetailUrl,
// GoLangConstant.requestPost,
// requestParaminfo, List<ImasterStationDetailsMonth> result2 = imasterUtils.getResPonseOther(ImasterConstant.stationDetailMonthUrl,
// ImasterConstant.resovleRule_data_page_records, GoLangConstant.requestPost,
// ImasterStationDetail.class requestParaminfo,
// ); ImasterConstant.resovleRule_data_page_records,
// List<ImasterStationDetail> result2 = imasterUtils.getResPonse(ImasterConstant.stationDetailUrl, ImasterStationDetailsMonth.class
// GoLangConstant.requestPost, );
// requestParaminfo, List<ImasterStationDetailsYear> result3 = imasterUtils.getResPonseOther(ImasterConstant.stationDetailYearUrl,
// ImasterConstant.resovleRule_data_page_records, GoLangConstant.requestPost,
// ImasterStationDetail.class requestParaminfo,
// ); ImasterConstant.resovleRule_data_page_records,
// List<ImasterStationDetail> result3 = imasterUtils.getResPonse(ImasterConstant.stationDetailUrl, ImasterStationDetailsYear.class
// GoLangConstant.requestPost, );
// requestParaminfo,
// ImasterConstant.resovleRule_data_page_records,
// ImasterStationDetail.class
// );
for (int j = 0; j < result.size(); j++) { for (int j = 0; j < result.size(); j++) {
QueryWrapper<ImasterStationList> queryWrapper = new QueryWrapper<>(); QueryWrapper<ImasterStationList> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("plant_code", result.get(j).getStationCode()); queryWrapper.eq("plant_code", result.get(j).getStationCode());
...@@ -195,10 +211,41 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -195,10 +211,41 @@ public class ImasterDataServiceImpl implements ImasterDataService {
jpStation.setThirdCode(PVProducerInfoEnum.HUAWEI.getCode()); jpStation.setThirdCode(PVProducerInfoEnum.HUAWEI.getCode());
// jpStation.setRealTimePower(imasterStationDetail.getPower()); // jpStation.setRealTimePower(imasterStationDetail.getPower());
// jpStation.setOnGridType(GoLangConstant.intoNetWorkStatus.get(String.valueOf(imasterStationDetail.getStationtypenew()))); // jpStation.setOnGridType(GoLangConstant.intoNetWorkStatus.get(String.valueOf(imasterStationDetail.getStationtypenew())));
jpStation.setDayGenerate(imasterStationDetail.getDay_power()); jpStation.setDayGenerate(imasterStationDetail.getDay_power() );
jpStation.setMonthGenerate(imasterStationDetail.getMonth_power()); jpStation.setMonthGenerate(imasterStationDetail.getMonth_power() );
// jpStation.setMonthGenerate(imasterStationDetail.getMonthPower()); // jpStation.setMonthGenerate(imasterStationDetail.getMonthPower());
// jpStation.setYearGenerate(imasterStationDetail.getYearenergy()); // jpStation.setYearGenerate(imasterStationDetail.getYearenergy());
Long currentTime = System.currentTimeMillis();
Long monthStart = CalendarAdjust.getMonthStartTime(currentTime, "GMT+8:00");
Long yearStart = CalendarAdjust.getYearStartTime(currentTime, "GMT+8:00");
// 获取年发电量 年收益
for (ImasterStationDetailsYear imasterStationDetailsYear : result3
) {
if(imasterStationDetailsYear.getCollectTime().equals(String.valueOf(yearStart))) {
jpStation.setYearGenerate(imasterStationDetailsYear.getInverter_power());
jpStation.setYearIncome(imasterStationDetailsYear.getPower_profit());
imasterStationDetailsYear.setStationCode(imasterStationList.getPlantCode());
imasterStationDetailsYear.setCreatedTime(System.currentTimeMillis());
imasterStationYearMapper.insert(imasterStationDetailsYear);
}
}
// 获取月收益
for (ImasterStationDetailsMonth imasterStationDetailsMonth: result2
) {
if(imasterStationDetailsMonth.getCollectTime().equals(String.valueOf(monthStart))) {
jpStation.setMonthIncome(imasterStationDetailsMonth.getPower_profit());
imasterStationDetailsMonth.setStationCode(imasterStationList.getPlantCode());
imasterStationDetailsMonth.setCreatedTime(System.currentTimeMillis());
imasterStationMonthMapper.insert(imasterStationDetailsMonth);
}
}
jpStation.setAccumulatedPower(imasterStationDetail.getTotal_power()); jpStation.setAccumulatedPower(imasterStationDetail.getTotal_power());
jpStation.setDayIncome(imasterStationDetail.getDay_income()); jpStation.setDayIncome(imasterStationDetail.getDay_income());
jpStation.setCumulativeIncome(imasterStationDetail.getTotal_income()); jpStation.setCumulativeIncome(imasterStationDetail.getTotal_income());
...@@ -237,7 +284,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -237,7 +284,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
hygfjpDayPower.setTationId(imasterStationList.getPlantCode()); hygfjpDayPower.setTationId(imasterStationList.getPlantCode());
hygfjpDayPower.setHour(hour); hygfjpDayPower.setHour(hour);
hygfjpDayPower.setYearMonthDay(today); hygfjpDayPower.setYearMonthDay(today);
// hygfjpDayPower.setPower(imasterStationDetail.getPower()); // hygfjpDayPower.setPower(imasterStationDetail.getPower());
if (ObjectUtils.isEmpty(hygfjpDayPower.getCreatedTime())) { if (ObjectUtils.isEmpty(hygfjpDayPower.getCreatedTime())) {
hygfjpDayPower.setCreatedTime(System.currentTimeMillis()); hygfjpDayPower.setCreatedTime(System.currentTimeMillis());
hygfjpDayPowerMapper.insert(hygfjpDayPower); hygfjpDayPowerMapper.insert(hygfjpDayPower);
...@@ -247,6 +294,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -247,6 +294,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
} }
} }
@Scheduled(cron = dataRequstScheduled) @Scheduled(cron = dataRequstScheduled)
@Override @Override
public void collectorList() { public void collectorList() {
...@@ -288,6 +336,8 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -288,6 +336,8 @@ public class ImasterDataServiceImpl implements ImasterDataService {
} }
//sn编码 //sn编码
jpCollector.setSnCode(imasterCollectorList.getEsnCode()); jpCollector.setSnCode(imasterCollectorList.getEsnCode());
jpCollector.setAddr(imasterStationList.getPlantAddress());
jpCollector.setName(imasterCollectorList.getDevName());
//类型 //类型
// jpCollector.setType(collectorDetailDto.getModel()); // jpCollector.setType(collectorDetailDto.getModel());
//更新时间 //更新时间
...@@ -307,7 +357,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -307,7 +357,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
//第三方厂商标识 //第三方厂商标识
jpCollector.setThirdCode(PVProducerInfoEnum.HUAWEI.getCode()); jpCollector.setThirdCode(PVProducerInfoEnum.HUAWEI.getCode());
//第三方厂商标识 //第三方厂商标识
// jpCollector.setState(GoLangConstant.stationStaus.get(collectorDetailDto.getState())); jpCollector.setState(ImasterConstant.inverterStaus.get("1"));
jpCollector.setStationName(imasterStationList.getPlantName()); jpCollector.setStationName(imasterStationList.getPlantName());
jpCollector.setVersion(imasterCollectorList.getSoftwareVersion()); jpCollector.setVersion(imasterCollectorList.getSoftwareVersion());
...@@ -336,6 +386,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -336,6 +386,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
} }
@Scheduled(cron = dataRequstScheduled) @Scheduled(cron = dataRequstScheduled)
@Override @Override
public void inverterList() { public void inverterList() {
...@@ -364,6 +415,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -364,6 +415,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
ImasterInverterList imasterInverterList = result.get(j); ImasterInverterList imasterInverterList = result.get(j);
imasterInverterList.setStationName(imasterStationList.getPlantName()); imasterInverterList.setStationName(imasterStationList.getPlantName());
imasterInverterList.setAddr(imasterStationList.getPlantAddress());
imasterInverterList.setCreatedTime(System.currentTimeMillis()); imasterInverterList.setCreatedTime(System.currentTimeMillis());
if(imasterInverterList.getDevTypeId() == ImasterConstant.devTypeI) { if(imasterInverterList.getDevTypeId() == ImasterConstant.devTypeI) {
imasterInverterListMapper.insert(imasterInverterList); imasterInverterListMapper.insert(imasterInverterList);
...@@ -372,6 +424,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -372,6 +424,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
} }
} }
@Scheduled(cron = dataRequstScheduled) @Scheduled(cron = dataRequstScheduled)
@Override @Override
public void inverterDetail() { public void inverterDetail() {
...@@ -385,6 +438,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -385,6 +438,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
String collect = inverterSns.stream().collect(Collectors.joining(",")); String collect = inverterSns.stream().collect(Collectors.joining(","));
requestInfo.put("sns", collect); requestInfo.put("sns", collect);
requestInfo.put("devTypeId", 1); requestInfo.put("devTypeId", 1);
requestInfo.put("collectTime", System.currentTimeMillis());
String requestParaminfo = JSON.toJSONString(requestInfo); String requestParaminfo = JSON.toJSONString(requestInfo);
List<ImasterInverterListDetails> result = imasterUtils.getResPonseOther(ImasterConstant.collectorDetailUrl, List<ImasterInverterListDetails> result = imasterUtils.getResPonseOther(ImasterConstant.collectorDetailUrl,
...@@ -393,6 +447,20 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -393,6 +447,20 @@ public class ImasterDataServiceImpl implements ImasterDataService {
ImasterConstant.resovleRule_data_page_records, ImasterConstant.resovleRule_data_page_records,
ImasterInverterListDetails.class ImasterInverterListDetails.class
); );
List<ImasterInverterMonth> result2 = imasterUtils.getResPonseOther(ImasterConstant.collectorDetailMonthUrl,
GoLangConstant.requestPost,
requestParaminfo,
ImasterConstant.resovleRule_data_page_records,
ImasterInverterMonth.class
);
List<ImasterInverterYear> result3 = imasterUtils.getResPonseOther(ImasterConstant.collectorDetailYearUrl,
GoLangConstant.requestPost,
requestParaminfo,
ImasterConstant.resovleRule_data_page_records,
ImasterInverterYear.class
);
for (int j = 0; j < result.size(); j++) { for (int j = 0; j < result.size(); j++) {
ImasterInverterListDetails inverterDetailDto = result.get(j); ImasterInverterListDetails inverterDetailDto = result.get(j);
inverterDetailDto.setCreatedTime((System.currentTimeMillis())); inverterDetailDto.setCreatedTime((System.currentTimeMillis()));
...@@ -418,10 +486,42 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -418,10 +486,42 @@ public class ImasterDataServiceImpl implements ImasterDataService {
jpInverter = new JpInverter(); jpInverter = new JpInverter();
} }
jpInverter.setSnCode(imasterInverterList.getEsnCode()); jpInverter.setSnCode(imasterInverterList.getEsnCode());
jpInverter.setAddr(imasterInverterList.getAddr());
jpInverter.setCollectorSnCode(collectorList.getEsnCode()); jpInverter.setCollectorSnCode(collectorList.getEsnCode());
jpInverter.setCollectorId(String.valueOf(collectorList.getId())); jpInverter.setCollectorId(String.valueOf(collectorList.getId()));
jpInverter.setDayPowerGeneration(inverterDetailDto.getDay_cap()); jpInverter.setDayPowerGeneration(inverterDetailDto.getDay_cap() );
// jpInverter.setState(GoLangConstant.stationStaus.get(inverterDetailDto.getCurrentState())); jpInverter.setState(ImasterConstant.inverterStaus.get(String.valueOf(inverterDetailDto.getRun_state())));
jpInverter.setTotalPowerGeneration(inverterDetailDto.getTotal_cap());
Long currentTime = System.currentTimeMillis();
Long monthStart = CalendarAdjust.getMonthStartTime(currentTime, "GMT+8:00");
Long yearStart = CalendarAdjust.getYearStartTime(currentTime, "GMT+8:00");
// 获取年发电量
for (ImasterInverterYear imasterInverterYear : result3
) {
if(imasterInverterYear.getCollectTime().equals(String.valueOf(yearStart)) && inverterDetailDto.getInverterId().equals(imasterInverterYear.getInverterId())) {
jpInverter.setYearPowerGeneration(imasterInverterYear.getProduct_power());
imasterInverterYear.setCreatedTime(System.currentTimeMillis());
imasterInverterYearMapper.insert(imasterInverterYear);
}
}
// 获取月发电量
for (ImasterInverterMonth imasterInverterMonth: result2
) {
if(imasterInverterMonth.getCollectTime().equals(String.valueOf(monthStart)) && inverterDetailDto.getInverterId().equals(imasterInverterMonth.getInverterId())) {
jpInverter.setMonthPowerGeneration(imasterInverterMonth.getProduct_power());
imasterInverterMonth.setCreatedTime(System.currentTimeMillis());
imasterInverterMonthMapper.insert(imasterInverterMonth);
}
}
// jpInverter.setCollectorId(inverterDetailDto.getCollectorId()); // jpInverter.setCollectorId(inverterDetailDto.getCollectorId());
// jpInverter.setCollectorSnCode(inverterDetailDto.getCollectorsn()); // jpInverter.setCollectorSnCode(inverterDetailDto.getCollectorsn());
jpInverter.setUpdateTime(new Date()); jpInverter.setUpdateTime(new Date());
...@@ -564,7 +664,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -564,7 +664,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
hygfjpInverterHistory.setSnCode(imasterInverterList.getEsnCode()); hygfjpInverterHistory.setSnCode(imasterInverterList.getEsnCode());
hygfjpInverterHistory.setThirdCode(PVProducerInfoEnum.HUAWEI.getCode()); hygfjpInverterHistory.setThirdCode(PVProducerInfoEnum.HUAWEI.getCode());
// hygfjpInverterHistory.setGenerationHours(inverterDetailDto.getFullHour()); // hygfjpInverterHistory.setGenerationHours(inverterDetailDto.getFullHour());
// hygfjpInverterHistory.setPowerGeneration(inverterDetailDto.getEToday()); hygfjpInverterHistory.setPowerGeneration(inverterDetailDto.getDay_cap());
if (ObjectUtils.isEmpty(hygfjpInverterHistory.getCreatedTime())) { if (ObjectUtils.isEmpty(hygfjpInverterHistory.getCreatedTime())) {
hygfjpInverterHistory.setCreatedTime(System.currentTimeMillis()); hygfjpInverterHistory.setCreatedTime(System.currentTimeMillis());
hygfjpInverterHistoryMapper.insert(hygfjpInverterHistory); hygfjpInverterHistoryMapper.insert(hygfjpInverterHistory);
...@@ -574,6 +674,7 @@ public class ImasterDataServiceImpl implements ImasterDataService { ...@@ -574,6 +674,7 @@ public class ImasterDataServiceImpl implements ImasterDataService {
} }
} }
@Scheduled(cron = dataRequstScheduled) @Scheduled(cron = dataRequstScheduled)
@Override @Override
public void inverAlramInfo() { public void inverAlramInfo() {
......
...@@ -120,6 +120,7 @@ public class KsolarDataAcquisitionServiceImpl implements KSolarDataAcquisitionSe ...@@ -120,6 +120,7 @@ public class KsolarDataAcquisitionServiceImpl implements KSolarDataAcquisitionSe
for (String stationId : stationIds) { for (String stationId : stationIds) {
LambdaQueryWrapper<KsolarStationList> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<KsolarStationList> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(KsolarStationList::getStationId, stationId); wrapper.eq(KsolarStationList::getStationId, stationId);
wrapper.orderByDesc(KsolarStationList::getCreatedTime);
List<KsolarStationList> ksolarStationLists = kSolarStationMapper.selectList(wrapper); List<KsolarStationList> ksolarStationLists = kSolarStationMapper.selectList(wrapper);
if (!CollectionUtils.isEmpty(ksolarStationLists)) { if (!CollectionUtils.isEmpty(ksolarStationLists)) {
KsolarStationList ksolarStation = ksolarStationLists.get(0); KsolarStationList ksolarStation = ksolarStationLists.get(0);
...@@ -167,18 +168,18 @@ public class KsolarDataAcquisitionServiceImpl implements KSolarDataAcquisitionSe ...@@ -167,18 +168,18 @@ public class KsolarDataAcquisitionServiceImpl implements KSolarDataAcquisitionSe
jpStation.setThirdCode(PVProducerInfoEnum.KSOLAR.getCode()); jpStation.setThirdCode(PVProducerInfoEnum.KSOLAR.getCode());
// 业主姓名 // 业主姓名
jpStation.setUserName(ksolarStation.getUserName()); jpStation.setUserName(ksolarStation.getUserName());
jpStation.setState(KSolarConstant.stationStaus.get(String.valueOf(ksolarStation.getStatus()))); jpStation.setState(KSolarConstant.collectStaus.get(String.valueOf(ksolarStation.getStatus())));
jpStation.setRealTimePower(ksolarStation.getPowerInter()); jpStation.setRealTimePower(ksolarStation.getPowerInter());
jpStation.setDayGenerate(ksolarStation.getDayGeneration()); jpStation.setDayGenerate(ksolarStation.getDayGeneration());
jpStation.setAccumulatedPower(ksolarStation.getTotalGeneration()); jpStation.setAccumulatedPower(ksolarStation.getTotalGeneration());
jpStation.setArea(ksolarStation.getAddress()); jpStation.setArea(ksolarStation.getAddress());
// 日收益 // 日收益
jpStation.setDayIncome(stationEarn.getDayEarn() * KSolarConstant.kwhToMwh); jpStation.setDayIncome(stationEarn.getDayEarn());
// 月发电量 // 月发电量
jpStation.setMonthGenerate(stationEarn.getMonthGeneration() * KSolarConstant.kwhToMwh); jpStation.setMonthGenerate(stationEarn.getMonthGeneration());
// 年发电量 // 年发电量
jpStation.setYearGenerate(stationEarn.getYearGeneration() * KSolarConstant.kwhToMwh); jpStation.setYearGenerate(stationEarn.getYearGeneration());
// 月收益 // 月收益
jpStation.setMonthIncome(monthEarn.get("monthEarn")); jpStation.setMonthIncome(monthEarn.get("monthEarn"));
...@@ -331,6 +332,7 @@ public class KsolarDataAcquisitionServiceImpl implements KSolarDataAcquisitionSe ...@@ -331,6 +332,7 @@ public class KsolarDataAcquisitionServiceImpl implements KSolarDataAcquisitionSe
for (String stationId : stationIds) { for (String stationId : stationIds) {
LambdaQueryWrapper<KsolarStationList> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<KsolarStationList> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(KsolarStationList::getStationId, stationId); wrapper.eq(KsolarStationList::getStationId, stationId);
wrapper.orderByDesc(KsolarStationList::getCreatedTime);
List<KsolarStationList> ksolarStationLists = kSolarStationMapper.selectList(wrapper); List<KsolarStationList> ksolarStationLists = kSolarStationMapper.selectList(wrapper);
if (!CollectionUtils.isEmpty(ksolarStationLists)) { if (!CollectionUtils.isEmpty(ksolarStationLists)) {
KsolarStationList ksolarStationList = ksolarStationLists.get(0); KsolarStationList ksolarStationList = ksolarStationLists.get(0);
...@@ -416,6 +418,7 @@ public class KsolarDataAcquisitionServiceImpl implements KSolarDataAcquisitionSe ...@@ -416,6 +418,7 @@ public class KsolarDataAcquisitionServiceImpl implements KSolarDataAcquisitionSe
collectIds.forEach(collectId -> { collectIds.forEach(collectId -> {
LambdaQueryWrapper<KsolarStationCollectList> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<KsolarStationCollectList> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(KsolarStationCollectList::getCollectId, collectId); wrapper.eq(KsolarStationCollectList::getCollectId, collectId);
wrapper.orderByDesc(KsolarStationCollectList::getCreatedTime);
List<KsolarStationCollectList> ksolarStationCollectLists = ksolarStationCollectListMapper.selectList(wrapper); List<KsolarStationCollectList> ksolarStationCollectLists = ksolarStationCollectListMapper.selectList(wrapper);
if (!CollectionUtils.isEmpty(ksolarStationCollectLists)) { if (!CollectionUtils.isEmpty(ksolarStationCollectLists)) {
KsolarStationCollectList ksolarStationCollectList = ksolarStationCollectLists.get(0); KsolarStationCollectList ksolarStationCollectList = ksolarStationCollectLists.get(0);
...@@ -455,21 +458,22 @@ public class KsolarDataAcquisitionServiceImpl implements KSolarDataAcquisitionSe ...@@ -455,21 +458,22 @@ public class KsolarDataAcquisitionServiceImpl implements KSolarDataAcquisitionSe
// jpInverter.setCapacity(inverterDetailDto.getPower().intValue()); // jpInverter.setCapacity(inverterDetailDto.getPower().intValue());
jpInverter.setSnCode(ksolarStationCollectData.getInverterId()); jpInverter.setSnCode(ksolarStationCollectData.getInverterId());
jpInverter.setState(KSolarConstant.collectStaus.get(ksolarStationCollectData.getStatus())); jpInverter.setState(KSolarConstant.stationStaus.get(ksolarStationCollectData.getStatus()));
jpInverter.setCollectorId(ksolarStationCollectList.getCollectId()); jpInverter.setCollectorId(ksolarStationCollectList.getCollectId());
jpInverter.setCollectorSnCode(ksolarStationCollectList.getCollectId()); jpInverter.setCollectorSnCode(ksolarStationCollectList.getCollectId());
jpInverter.setUpdateTime(new Date()); jpInverter.setUpdateTime(new Date());
jpInverter.setCurrentPower(ksolarStationCollectData.getPowerApparent()); jpInverter.setCurrentPower(ksolarStationCollectData.getPowerApparent());
jpInverter.setDayPowerGeneration(ksolarStationCollectData.getDayGeneration()); jpInverter.setDayPowerGeneration(ksolarStationCollectData.getDayGeneration());
jpInverter.setMonthPowerGeneration(ksolarStationCollectData.getMonthGeneration() * KSolarConstant.kwhToMwh); jpInverter.setMonthPowerGeneration(ksolarStationCollectData.getMonthGeneration());
jpInverter.setYearPowerGeneration(ksolarStationCollectData.getYearGeneration() * KSolarConstant.kwhToMwh); jpInverter.setYearPowerGeneration(ksolarStationCollectData.getYearGeneration());
jpInverter.setTotalPowerGeneration(ksolarStationCollectData.getTotalGeneration() * KSolarConstant.kwhToMwh); jpInverter.setTotalPowerGeneration(ksolarStationCollectData.getTotalGeneration());
jpInverter.setModel(ksolarStationCollectData.getDeviceModel()); jpInverter.setModel(ksolarStationCollectData.getDeviceModel());
jpInverter.setVersion(ksolarStationCollectData.getVersion()); jpInverter.setVersion(ksolarStationCollectData.getVersion());
jpInverter.setThirdStationId(ksolarStationCollectList.getThirdStationId()); jpInverter.setThirdStationId(ksolarStationCollectList.getThirdStationId());
jpInverter.setThirdCode(PVProducerInfoEnum.KSOLAR.getCode()); jpInverter.setThirdCode(PVProducerInfoEnum.KSOLAR.getCode());
jpInverter.setStationName(ksolarStationCollectList.getStationName()); jpInverter.setStationName(ksolarStationCollectList.getStationName());
jpInverter.setAddr(ksolarStationCollectList.getAddress());
if (!ObjectUtils.isEmpty(jpInverter.getSequenceNbr())) { if (!ObjectUtils.isEmpty(jpInverter.getSequenceNbr())) {
jpInverterMapper.updateById(jpInverter); jpInverterMapper.updateById(jpInverter);
} else { } else {
......
package com.yeejoin.amos.boot.module.jxiop.biz.Enum;
import com.yeejoin.amos.boot.module.jxiop.api.Enum.AlarmDesc;
public enum WarningNameEnum {
ANQUAN(0,"安全"),
ZHUYI(1,"注意"),
JINGGAO(2, "警告"),
WEIXIAN(3,"危险");
private int code;
private String name;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
WarningNameEnum(int code, String name) {
this.code = code;
this.name = name;
}
public static int getCode(String name) {
for (WarningNameEnum warningNameEnum : WarningNameEnum.values())
{
if (warningNameEnum.getName().equals(name))
{
return warningNameEnum.getCode();
}
}
return 0;
}
}
package com.yeejoin.amos.boot.module.jxiop.biz.config;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
@Component
public class AsyncScheduledTaskConfig {
@Bean("async")
public Executor asyncScheduledTask(){
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setMaxPoolSize(50);
executor.setCorePoolSize(20);
executor.setQueueCapacity(50);
executor.setThreadNamePrefix("async-thread-");
executor.setKeepAliveSeconds(60);
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy(){});
executor.initialize();
return executor;
}
}
...@@ -25,7 +25,6 @@ import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.CommonServiceImpl; ...@@ -25,7 +25,6 @@ import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.CommonServiceImpl;
import com.yeejoin.amos.boot.module.jxiop.biz.tdmapper.IndicatorDataMapper; import com.yeejoin.amos.boot.module.jxiop.biz.tdmapper.IndicatorDataMapper;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -955,4 +954,24 @@ public class BigScreenAnalyseController extends BaseController { ...@@ -955,4 +954,24 @@ public class BigScreenAnalyseController extends BaseController {
} }
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
@ApiOperation(value = "获取区域信息,根据层级查询单位信息 key 和 value都是区域名称")
@GetMapping("/getAreaListByLevel")
public ResponseModel<List<Map<String, String>>> getAreaListByLevel(@RequestParam("level") String level) throws Exception {
FeignClientResult<List<CompanyModel>> listFeignClientResult = Privilege.companyClient.queryAgencyList(level);
ArrayList<Map<String, String>> maps = new ArrayList<>();
if (!ObjectUtils.isEmpty(listFeignClientResult)) {
if (listFeignClientResult.getStatus() == 200) {
listFeignClientResult.getResult().forEach(item -> {
HashMap<String, String> resultMap = new HashMap<>();
resultMap.put("text", item.getCompanyName());
resultMap.put("value", item.getCompanyName());
maps.add(resultMap);
});
} else {
throw new RuntimeException(listFeignClientResult.getMessage());
}
}
return ResponseHelper.buildResponse(maps);
}
} }
package com.yeejoin.amos.boot.module.jxiop.biz.emqx;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.IdxBizFanWarningRecord;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.IdxBizPvWarningRecord;
import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.IdxBizFanWarningRecordServiceImpl;
import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.IdxBizPvWarningRecordServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.component.emq.EmqxListener;
import javax.annotation.PostConstruct;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
@Component
@Slf4j
public class WarningRecordStatusMessage extends EmqxListener {
@Autowired
protected EmqKeeper emqKeeper;
// 江西电建接收红黄绿码主题
private static final String QUESTION_STATUS_CHANGE = "question/status/change";
private static final BlockingQueue<JSONObject> blockingQueue = new LinkedBlockingQueue<JSONObject>();
@Autowired
private IdxBizFanWarningRecordServiceImpl idxBizFanWarningRecordService;
@Autowired
private IdxBizPvWarningRecordServiceImpl idxBizPvWarningRecordService;
@PostConstruct
void init() throws Exception {
new Thread(taskRunnable).start();
emqKeeper.subscript(QUESTION_STATUS_CHANGE, 2, this);
}
@Override
public void processMessage(String topic, MqttMessage message) throws Exception {
log.info("人员赋码消息{}", new String(message.getPayload()));
JSONObject ja = JSON.parseObject(new String(message.getPayload()));
blockingQueue.add(ja);
}
Runnable taskRunnable = new Runnable() {
@Override
public void run() {
boolean isRun = true;
int k = 0;
while (isRun) {
k++;
isRun = k < Integer.MAX_VALUE;
try {
JSONObject analysisResult = blockingQueue.take();
jxIopUpdate(analysisResult);
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
public void jxIopUpdate(JSONObject analysisResult) {
log.info("修改预警状态信息:{}", analysisResult);
if (ObjectUtils.isNotEmpty(analysisResult) && analysisResult.get("warningObjectType").toString().equals("pv")) {
LambdaUpdateWrapper<IdxBizFanWarningRecord> lambda = new LambdaUpdateWrapper<>();
lambda.set(IdxBizFanWarningRecord::getDisposotionState, "已处置");
lambda.eq(IdxBizFanWarningRecord::getSequenceNbr, analysisResult.get("objectId"));
idxBizFanWarningRecordService.update(lambda);
} else if (ObjectUtils.isNotEmpty(analysisResult) && analysisResult.get("warningObjectType").toString().equals("fan")) {
LambdaUpdateWrapper<IdxBizPvWarningRecord> lambda = new LambdaUpdateWrapper<>();
lambda.set(IdxBizPvWarningRecord::getDisposotionState, "已处置");
lambda.eq(IdxBizPvWarningRecord::getSequenceNbr, analysisResult.get("objectId"));
idxBizPvWarningRecordService.update(lambda);
}
}
}
package com.yeejoin.amos.boot.module.jxiop.biz.emqx;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.IdxBizFanWarningRecord;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.IdxBizPvWarningRecord;
import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.IdxBizFanWarningRecordServiceImpl;
import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.IdxBizPvWarningRecordServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.component.emq.EmqxListener;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
/**
* 处理无需处置情况
*/
@Component
@Slf4j
public class WarningRecordStatusMessage2 extends EmqxListener {
@Autowired
protected EmqKeeper emqKeeper;
/**
* 无需处置
*/
public static final String NOT_DISPOSE_AMOS = "not/dispose/amos";
private static final BlockingQueue<JSONObject> blockingQueue = new LinkedBlockingQueue<JSONObject>();
@Autowired
private IdxBizFanWarningRecordServiceImpl idxBizFanWarningRecordService;
@Autowired
private IdxBizPvWarningRecordServiceImpl idxBizPvWarningRecordService;
@PostConstruct
void init() throws Exception {
new Thread(taskRunnable).start();
emqKeeper.subscript(NOT_DISPOSE_AMOS, 2, this);
}
@Override
public void processMessage(String topic, MqttMessage message) throws Exception {
log.info("修改预警状态消息{}", new String(message.getPayload()));
JSONObject ja = JSON.parseObject(new String(message.getPayload()));
blockingQueue.add(ja);
}
Runnable taskRunnable = new Runnable() {
@Override
public void run() {
boolean isRun = true;
int k = 0;
while (isRun) {
k++;
isRun = k < Integer.MAX_VALUE;
try {
JSONObject analysisResult = blockingQueue.take();
jxIopUpdate(analysisResult);
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
public void jxIopUpdate(JSONObject analysisResult) {
log.info("修改预警状态信息:{}", analysisResult);
if (ObjectUtils.isNotEmpty(analysisResult) && analysisResult.get("warningObjectType").toString().equals("pv")) {
LambdaUpdateWrapper<IdxBizFanWarningRecord> lambda = new LambdaUpdateWrapper<>();
lambda.set(IdxBizFanWarningRecord::getDisposotionState, "已处置");
List<String> traceIds = (List<String>) analysisResult.get("traceIds");
lambda.in(IdxBizFanWarningRecord::getSequenceNbr, traceIds);
idxBizFanWarningRecordService.update(lambda);
} else if (ObjectUtils.isNotEmpty(analysisResult) && analysisResult.get("warningObjectType").toString().equals("fan")) {
LambdaUpdateWrapper<IdxBizPvWarningRecord> lambda = new LambdaUpdateWrapper<>();
lambda.set(IdxBizPvWarningRecord::getDisposotionState, "已处置");
List<String> traceIds = (List<String>) analysisResult.get("traceIds");
lambda.eq(IdxBizPvWarningRecord::getSequenceNbr, traceIds);
idxBizPvWarningRecordService.update(lambda);
}
}
}
package com.yeejoin.amos.boot.module.jxiop.biz.entity; package com.yeejoin.amos.boot.module.jxiop.biz.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
...@@ -29,7 +31,7 @@ public class IdxBizFanWarningRecord{ ...@@ -29,7 +31,7 @@ public class IdxBizFanWarningRecord{
/** /**
* *
*/ */
@TableField("SEQUENCE_NBR") @TableId(value = "SEQUENCE_NBR", type = IdType.ID_WORKER_STR)
private String sequenceNbr; private String sequenceNbr;
/** /**
...@@ -133,4 +135,10 @@ public class IdxBizFanWarningRecord{ ...@@ -133,4 +135,10 @@ public class IdxBizFanWarningRecord{
* */ * */
@TableField("CONTENT") @TableField("CONTENT")
private String CONTENT; private String CONTENT;
@TableField("POINT_NAME")
private String pointName;
@TableField("HEALTH_LEVEL")
private String healthLevel;
} }
...@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; ...@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
/** /**
* *
...@@ -39,7 +40,7 @@ public class IdxBizFanWarningRuleSet{ ...@@ -39,7 +40,7 @@ public class IdxBizFanWarningRuleSet{
* *
*/ */
@TableField("REC_DATE") @TableField("REC_DATE")
private LocalDateTime recDate; private Date recDate;
/** /**
* *
...@@ -81,7 +82,7 @@ public class IdxBizFanWarningRuleSet{ ...@@ -81,7 +82,7 @@ public class IdxBizFanWarningRuleSet{
* *
*/ */
@TableField("ANALYSIS_POINT_ID") @TableField("ANALYSIS_POINT_ID")
private Integer analysisPointId; private String analysisPointId;
/** /**
* 分析周期((按天、10min、小时) * 分析周期((按天、10min、小时)
......
package com.yeejoin.amos.boot.module.jxiop.biz.entity; package com.yeejoin.amos.boot.module.jxiop.biz.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.Data; import lombok.Data;
...@@ -8,6 +10,7 @@ import lombok.EqualsAndHashCode; ...@@ -8,6 +10,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
/** /**
* *
...@@ -26,7 +29,7 @@ public class IdxBizPvWarningRecord{ ...@@ -26,7 +29,7 @@ public class IdxBizPvWarningRecord{
/** /**
* *
*/ */
@TableField("SEQUENCE_NBR") @TableId(value = "SEQUENCE_NBR", type = IdType.ID_WORKER_STR)
private String sequenceNbr; private String sequenceNbr;
/** /**
...@@ -39,7 +42,7 @@ public class IdxBizPvWarningRecord{ ...@@ -39,7 +42,7 @@ public class IdxBizPvWarningRecord{
* *
*/ */
@TableField("REC_DATE") @TableField("REC_DATE")
private LocalDateTime recDate; private Date recDate;
/** /**
* *
...@@ -69,7 +72,7 @@ public class IdxBizPvWarningRecord{ ...@@ -69,7 +72,7 @@ public class IdxBizPvWarningRecord{
* *
*/ */
@TableField("HEALTH_INDEX_SEQ") @TableField("HEALTH_INDEX_SEQ")
private Integer healthIndexSeq; private String healthIndexSeq;
/** /**
* *
...@@ -136,4 +139,8 @@ public class IdxBizPvWarningRecord{ ...@@ -136,4 +139,8 @@ public class IdxBizPvWarningRecord{
* */ * */
@TableField("CONTENT") @TableField("CONTENT")
private String CONTENT; private String CONTENT;
@TableField("POINT_NAME")
private String pointName;
@TableField("HEALTH_LEVEL")
private String healthLevel;
} }
...@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; ...@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
/** /**
* *
...@@ -39,7 +40,7 @@ public class IdxBizPvWarningRuleSet{ ...@@ -39,7 +40,7 @@ public class IdxBizPvWarningRuleSet{
* *
*/ */
@TableField("REC_DATE") @TableField("REC_DATE")
private LocalDateTime recDate; private Date recDate;
/** /**
* *
...@@ -81,7 +82,7 @@ public class IdxBizPvWarningRuleSet{ ...@@ -81,7 +82,7 @@ public class IdxBizPvWarningRuleSet{
* 分析变量测点ID * 分析变量测点ID
*/ */
@TableField("ANALYSIS_POINT_ID") @TableField("ANALYSIS_POINT_ID")
private Integer analysisPointId; private String analysisPointId;
/** /**
* 分析周期((按天、10min、小时) * 分析周期((按天、10min、小时)
......
...@@ -31,6 +31,7 @@ import org.springframework.data.elasticsearch.core.SearchHit; ...@@ -31,6 +31,7 @@ import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.core.SearchHits; import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.core.query.Query;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -131,6 +132,9 @@ public class CommonServiceImpl { ...@@ -131,6 +132,9 @@ public class CommonServiceImpl {
@Autowired @Autowired
IdxBizPvPointVarCentralValueMapper idxBizPvPointVarCentralValueMapper; IdxBizPvPointVarCentralValueMapper idxBizPvPointVarCentralValueMapper;
@Autowired
HealthStatusIndicatorServiceImpl healthStatusIndicatorService;
/** /**
* @return * @return
* @deprecated 获取工况变量列表风机 * @deprecated 获取工况变量列表风机
...@@ -1457,9 +1461,11 @@ public class CommonServiceImpl { ...@@ -1457,9 +1461,11 @@ public class CommonServiceImpl {
} }
@Scheduled(cron = "0/5 * * * * ?") @Scheduled(cron = "0 0/10 * * * ?")
@Async("async")
public void healthWarningMinuteByFan() { public void healthWarningMinuteByFan() {
Date time = new Date(); Date time = new Date();
Calendar calendar = Calendar.getInstance();
List<IdxBizFanPointProcessVariableClassificationDto> data = idxBizFanPointProcessVariableClassificationMapper.getInfluxDBData(); List<IdxBizFanPointProcessVariableClassificationDto> data = idxBizFanPointProcessVariableClassificationMapper.getInfluxDBData();
Map<String, List<IdxBizFanPointProcessVariableClassificationDto>> maps = data.stream().collect(Collectors.groupingBy(IdxBizFanPointProcessVariableClassificationDto::getGatewayId)); Map<String, List<IdxBizFanPointProcessVariableClassificationDto>> maps = data.stream().collect(Collectors.groupingBy(IdxBizFanPointProcessVariableClassificationDto::getGatewayId));
BoolQueryBuilder boolMustAll = QueryBuilders.boolQuery(); BoolQueryBuilder boolMustAll = QueryBuilders.boolQuery();
...@@ -1526,12 +1532,14 @@ public class CommonServiceImpl { ...@@ -1526,12 +1532,14 @@ public class CommonServiceImpl {
} }
} }
if (idxBizUhef.getProcess1Min() <= value1 && value1 <= idxBizUhef.getProcess1Max() && idxBizUhef.getProcess2Min() <= value2 && value2 <= idxBizUhef.getPorcess2Max() && idxBizUhef.getProcess3Min() <= value3 && value3 <= idxBizUhef.getProcess3Max()) { if (idxBizUhef.getProcess1Min() <= value1 && value1 <= idxBizUhef.getProcess1Max() && idxBizUhef.getProcess2Min() <= value2 && value2 <= idxBizUhef.getPorcess2Max() && idxBizUhef.getProcess3Min() <= value3 && value3 <= idxBizUhef.getProcess3Max()) {
if (!analysisVariableIdList.contains(idxBizUhef.getAnalysisPointId())){
analysisVariableList.add(value4); analysisVariableList.add(value4);
stdDevList.add(idxBizUhef.getAnalysisStdDev()); stdDevList.add(idxBizUhef.getAnalysisStdDev());
centerValueList.add(idxBizUhef.getAnalysisCenterValue()); centerValueList.add(idxBizUhef.getAnalysisCenterValue());
analysisVariableIdList.add(idxBizUhef.getAnalysisPointId()); analysisVariableIdList.add(idxBizUhef.getAnalysisPointId());
} }
} }
}
requestMap.put("analysisVariable", analysisVariableList); requestMap.put("analysisVariable", analysisVariableList);
requestMap.put("stdDev", stdDevList); requestMap.put("stdDev", stdDevList);
...@@ -1547,41 +1555,62 @@ public class CommonServiceImpl { ...@@ -1547,41 +1555,62 @@ public class CommonServiceImpl {
JSONArray indexValueArray = jsonObject.getJSONArray("indexValue"); JSONArray indexValueArray = jsonObject.getJSONArray("indexValue");
JSONArray scoreValueArray = jsonObject.getJSONArray("scoreValue"); JSONArray scoreValueArray = jsonObject.getJSONArray("scoreValue");
JSONArray analysisVariableIdArray = jsonObject.getJSONArray("analysisVariableId"); JSONArray analysisVariableIdArray = jsonObject.getJSONArray("analysisVariableId");
List<String> jsonArrayToStringList = JSONObject.parseArray(analysisVariableIdArray.toJSONString(),String.class);
LambdaQueryWrapper<IdxBizFanPointProcessVariableClassification> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<IdxBizFanPointProcessVariableClassification> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(IdxBizFanPointProcessVariableClassification::getSequenceNbr, analysisVariableIdArray); queryWrapper.in(IdxBizFanPointProcessVariableClassification::getSequenceNbr, jsonArrayToStringList);
List<IdxBizFanPointProcessVariableClassification> list = idxBizFanPointProcessVariableClassificationMapper.selectList(queryWrapper); List<IdxBizFanPointProcessVariableClassification> list = idxBizFanPointProcessVariableClassificationMapper.selectList(queryWrapper);
List<IdxBizFanHealthIndex> idxBizFanHealthIndexs = new ArrayList<>(); List<IdxBizFanHealthIndex> idxBizFanHealthIndexs = new ArrayList<>();
Set<String> stations = list.stream().map(IdxBizFanPointProcessVariableClassification::getStation).collect(Collectors.toSet());
LambdaQueryWrapper<IdxBizFanHealthLevel> query = new LambdaQueryWrapper<>();
query.eq(IdxBizFanHealthLevel::getAnalysisObjType, "测点");
query.in(IdxBizFanHealthLevel::getStatus, stations);
List<IdxBizFanHealthLevel> idxBizFanHealthLevels = idxBizFanHealthLevelMapper.selectList(query);
for (IdxBizFanPointProcessVariableClassification obj : list) { for (IdxBizFanPointProcessVariableClassification obj : list) {
for (int i = 0; i < analysisVariableIdArray.size(); i++) { for (int i = 0; i < analysisVariableIdArray.size(); i++) {
if (analysisVariableIdArray.get(i).toString().equals(obj.getSequenceNbr())){
IdxBizFanHealthIndex idxBizFanHealthIndex = new IdxBizFanHealthIndex(); IdxBizFanHealthIndex idxBizFanHealthIndex = new IdxBizFanHealthIndex();
BeanUtils.copyProperties(obj, idxBizFanHealthIndex); BeanUtils.copyProperties(obj, idxBizFanHealthIndex,"sequenceNbr");
idxBizFanHealthIndex.setHealthIndex(indexValueArray.getDoubleValue(i)< 0 ? 0 : indexValueArray.getDoubleValue(i)); idxBizFanHealthIndex.setHealthIndex(indexValueArray.getDoubleValue(i)< 0 ? 0 : indexValueArray.getDoubleValue(i));
idxBizFanHealthIndex.setAnalysisObjSeq(obj.getSequenceNbr()); idxBizFanHealthIndex.setAnalysisObjSeq(obj.getSequenceNbr());
idxBizFanHealthIndex.setRecDate(time); idxBizFanHealthIndex.setRecDate(time);
idxBizFanHealthIndex.setSequenceNbr(null); // idxBizFanHealthIndex.setSequenceNbr(null);
idxBizFanHealthIndex.setRecDate(new Date());
idxBizFanHealthIndex.setWeigth(1.0); idxBizFanHealthIndex.setWeigth(1.0);
//获取健康指数对应等级 //获取健康指数对应等级
LambdaQueryWrapper<IdxBizFanHealthLevel> query = new LambdaQueryWrapper<>(); for (IdxBizFanHealthLevel idxBizFanHealthLevel : idxBizFanHealthLevels) {
query.eq(IdxBizFanHealthLevel::getAnalysisObjType, "测点"); if (indexValueArray.getDoubleValue(i) <= idxBizFanHealthLevel.getGroupUpperLimit()
query.eq(IdxBizFanHealthLevel::getStatus, obj.getStation()); && indexValueArray.getDoubleValue(i) >= idxBizFanHealthLevel.getGroupLowerLimit()){
query.le(IdxBizFanHealthLevel::getGroupLowerLimit, indexValueArray.getDoubleValue(i)< 0 ? 0 : indexValueArray.getDoubleValue(i));
query.ge(IdxBizFanHealthLevel::getGroupUpperLimit, indexValueArray.getDoubleValue(i)< 0 ? 0 : indexValueArray.getDoubleValue(i));
IdxBizFanHealthLevel idxBizFanHealthLevel = idxBizFanHealthLevelMapper.selectOne(query);
idxBizFanHealthIndex.setHealthLevel(idxBizFanHealthLevel.getHealthLevel()); idxBizFanHealthIndex.setHealthLevel(idxBizFanHealthLevel.getHealthLevel());
}
}
idxBizFanHealthIndex.setAnalysisType("按时刻"); idxBizFanHealthIndex.setAnalysisType("按时刻");
idxBizFanHealthIndex.setAnalysisObjType("测点"); idxBizFanHealthIndex.setAnalysisObjType("测点");
if (ObjectUtils.isEmpty(scoreValueArray.getDoubleValue(i))){
System.out.println(JSON.toJSONString(requestMap));
idxBizFanHealthIndex.setANOMALY(0.0);
}else {
idxBizFanHealthIndex.setANOMALY(scoreValueArray.getDoubleValue(i)); idxBizFanHealthIndex.setANOMALY(scoreValueArray.getDoubleValue(i));
}
idxBizFanHealthIndex.setANALYSISTIME(DateUtils.getDateNowString()); idxBizFanHealthIndex.setANALYSISTIME(DateUtils.getDateNowString());
idxBizFanHealthIndexs.add(idxBizFanHealthIndex); idxBizFanHealthIndexs.add(idxBizFanHealthIndex);
} }
} }
}
idxBizFanHealthIndexService.saveBatch(idxBizFanHealthIndexs); idxBizFanHealthIndexService.saveBatch(idxBizFanHealthIndexs);
} }
try { try {
logger.info("--------------------response: " + response); logger.info("--------------------response: " + response);
logger.info("------------------------------------------调用健康指数计算算法结束----------------------------------------"); logger.info("------------------------------------------调用健康指数计算算法结束----------------------------------------");
logger.info("------------------------------------------开始计算预警----------------------------------------");
healthStatusIndicatorService.healthWarningMinute(calendar);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
...@@ -1589,8 +1618,10 @@ public class CommonServiceImpl { ...@@ -1589,8 +1618,10 @@ public class CommonServiceImpl {
} }
@Scheduled(cron = "0 0/5 * * * ?") @Scheduled(cron = "0 0/10 * * * ?")
@Async("async")
public void healthWarningMinuteByPv() { public void healthWarningMinuteByPv() {
Calendar calendar = Calendar.getInstance();
Date time = new Date(); Date time = new Date();
List<IdxBizPvPointProcessVariableClassificationDto> data = idxBizPvPointProcessVariableClassificationMapper.getInfluxDBData(); List<IdxBizPvPointProcessVariableClassificationDto> data = idxBizPvPointProcessVariableClassificationMapper.getInfluxDBData();
Map<String, List<IdxBizPvPointProcessVariableClassificationDto>> maps = data.stream().collect(Collectors.groupingBy(IdxBizPvPointProcessVariableClassificationDto::getGatewayId)); Map<String, List<IdxBizPvPointProcessVariableClassificationDto>> maps = data.stream().collect(Collectors.groupingBy(IdxBizPvPointProcessVariableClassificationDto::getGatewayId));
...@@ -1654,12 +1685,14 @@ public class CommonServiceImpl { ...@@ -1654,12 +1685,14 @@ public class CommonServiceImpl {
} }
} }
if (idxBizUhef.getProcess1Min() <= value1 && value1 <= idxBizUhef.getProcess1Max() && idxBizUhef.getProcess2Min() <= value2 && value2 <= idxBizUhef.getProcess2Max() && idxBizUhef.getProcess3Min() <= value3 && value3 <= idxBizUhef.getProcess3Max()) { if (idxBizUhef.getProcess1Min() <= value1 && value1 <= idxBizUhef.getProcess1Max() && idxBizUhef.getProcess2Min() <= value2 && value2 <= idxBizUhef.getProcess2Max() && idxBizUhef.getProcess3Min() <= value3 && value3 <= idxBizUhef.getProcess3Max()) {
if (!analysisVariableIdList.contains(idxBizUhef.getAnalysisPointId())){
analysisVariableList.add(value4); analysisVariableList.add(value4);
stdDevList.add(idxBizUhef.getAnalysisStdDev()); stdDevList.add(idxBizUhef.getAnalysisStdDev());
centerValueList.add(idxBizUhef.getAnalysisCenterValue()); centerValueList.add(idxBizUhef.getAnalysisCenterValue());
analysisVariableIdList.add(idxBizUhef.getAnalysisPointId()); analysisVariableIdList.add(idxBizUhef.getAnalysisPointId());
} }
} }
}
requestMap.put("analysisVariable", analysisVariableList); requestMap.put("analysisVariable", analysisVariableList);
requestMap.put("stdDev", stdDevList); requestMap.put("stdDev", stdDevList);
requestMap.put("centerValue", centerValueList); requestMap.put("centerValue", centerValueList);
...@@ -1671,26 +1704,39 @@ public class CommonServiceImpl { ...@@ -1671,26 +1704,39 @@ public class CommonServiceImpl {
JSONArray indexValueArray = jsonObject.getJSONArray("indexValue"); JSONArray indexValueArray = jsonObject.getJSONArray("indexValue");
JSONArray scoreValueArray = jsonObject.getJSONArray("scoreValue"); JSONArray scoreValueArray = jsonObject.getJSONArray("scoreValue");
JSONArray analysisVariableIdArray = jsonObject.getJSONArray("analysisVariableId"); JSONArray analysisVariableIdArray = jsonObject.getJSONArray("analysisVariableId");
List<String> jsonArrayToStringList = JSONObject.parseArray(analysisVariableIdArray.toJSONString(),String.class);
LambdaQueryWrapper<IdxBizPvPointProcessVariableClassification> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<IdxBizPvPointProcessVariableClassification> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(IdxBizPvPointProcessVariableClassification::getSequenceNbr, analysisVariableIdArray); queryWrapper.in(IdxBizPvPointProcessVariableClassification::getSequenceNbr, jsonArrayToStringList);
List<IdxBizPvPointProcessVariableClassification> list = idxBizPvPointProcessVariableClassificationMapper.selectList(queryWrapper); List<IdxBizPvPointProcessVariableClassification> list = idxBizPvPointProcessVariableClassificationMapper.selectList(queryWrapper);
Set<String> stations = list.stream().map(IdxBizPvPointProcessVariableClassification::getStation).collect(Collectors.toSet());
LambdaQueryWrapper<IdxBizPvHealthLevel> query = new LambdaQueryWrapper<>();
query.eq(IdxBizPvHealthLevel::getAnalysisObjType, "测点");
query.in(IdxBizPvHealthLevel::getStatus, stations);
List<IdxBizPvHealthLevel> idxBizFanHealthLevels = idxBizPvHealthLevelMapper.selectList(query);
List<IdxBizPvHealthIndex> idxBizPvHealthIndexs = new ArrayList<>(); List<IdxBizPvHealthIndex> idxBizPvHealthIndexs = new ArrayList<>();
for (IdxBizPvPointProcessVariableClassification obj : list) { for (IdxBizPvPointProcessVariableClassification obj : list) {
for (int i = 0; i < analysisVariableIdArray.size(); i++) { for (int i = 0; i < analysisVariableIdArray.size(); i++) {
if (analysisVariableIdArray.get(i).toString().equals(obj.getSequenceNbr())){
IdxBizPvHealthIndex idxBizPvHealthIndex = new IdxBizPvHealthIndex(); IdxBizPvHealthIndex idxBizPvHealthIndex = new IdxBizPvHealthIndex();
BeanUtils.copyProperties(obj, idxBizPvHealthIndex); BeanUtils.copyProperties(obj, idxBizPvHealthIndex, "sequenceNbr");
// idxBizPvHealthIndex.setSequenceNbr(null);
idxBizPvHealthIndex.setHealthIndex(indexValueArray.getDoubleValue(i)< 0 ? 0 : indexValueArray.getDoubleValue(i)); idxBizPvHealthIndex.setHealthIndex(indexValueArray.getDoubleValue(i)< 0 ? 0 : indexValueArray.getDoubleValue(i));
idxBizPvHealthIndex.setAnalysisObjSeq(obj.getSequenceNbr()); idxBizPvHealthIndex.setAnalysisObjSeq(obj.getSequenceNbr());
idxBizPvHealthIndex.setRecDate(time); idxBizPvHealthIndex.setRecDate(time);
idxBizPvHealthIndex.setWeigth(1.0); idxBizPvHealthIndex.setWeigth(1.0);
//获取健康指数对应等级 //获取健康指数对应等级
LambdaQueryWrapper<IdxBizPvHealthLevel> query = new LambdaQueryWrapper<>();
query.eq(IdxBizPvHealthLevel::getAnalysisObjType, "测点"); for (IdxBizPvHealthLevel idxBizFanHealthLevel : idxBizFanHealthLevels) {
query.eq(IdxBizPvHealthLevel::getStatus, obj.getStation()); if (indexValueArray.getDoubleValue(i) <= idxBizFanHealthLevel.getGroupUpperLimit()
query.le(IdxBizPvHealthLevel::getGroupLowerLimit, indexValueArray.getDoubleValue(i) < 0 ? 0 : indexValueArray.getDoubleValue(i)); && indexValueArray.getDoubleValue(i) >= idxBizFanHealthLevel.getGroupLowerLimit()){
query.ge(IdxBizPvHealthLevel::getGroupUpperLimit, indexValueArray.getDoubleValue(i) < 0 ? 0 : indexValueArray.getDoubleValue(i) );
IdxBizPvHealthLevel idxBizFanHealthLevel = idxBizPvHealthLevelMapper.selectOne(query);
idxBizPvHealthIndex.setHealthLevel(idxBizFanHealthLevel.getHealthLevel()); idxBizPvHealthIndex.setHealthLevel(idxBizFanHealthLevel.getHealthLevel());
}
}
idxBizPvHealthIndex.setAnalysisType("按时刻"); idxBizPvHealthIndex.setAnalysisType("按时刻");
idxBizPvHealthIndex.setAnalysisObjType("测点"); idxBizPvHealthIndex.setAnalysisObjType("测点");
idxBizPvHealthIndex.setANOMALY(scoreValueArray.getDoubleValue(i)); idxBizPvHealthIndex.setANOMALY(scoreValueArray.getDoubleValue(i));
...@@ -1698,6 +1744,7 @@ public class CommonServiceImpl { ...@@ -1698,6 +1744,7 @@ public class CommonServiceImpl {
idxBizPvHealthIndexs.add(idxBizPvHealthIndex); idxBizPvHealthIndexs.add(idxBizPvHealthIndex);
} }
} }
}
idxBizPvHealthIndexService.saveBatch(idxBizPvHealthIndexs); idxBizPvHealthIndexService.saveBatch(idxBizPvHealthIndexs);
} }
try { try {
...@@ -1706,6 +1753,8 @@ public class CommonServiceImpl { ...@@ -1706,6 +1753,8 @@ public class CommonServiceImpl {
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
healthStatusIndicatorService.healthWarningMinuteGF(calendar);
} }
......
package com.yeejoin.amos.boot.module.jxiop.biz.service.impl; package com.yeejoin.amos.boot.module.jxiop.biz.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jxiop.api.dto.BizMessage;
import com.yeejoin.amos.boot.module.jxiop.api.dto.RiskBizInfoVo;
import com.yeejoin.amos.boot.module.jxiop.api.dto.RiskDynamicDetailsVo;
import com.yeejoin.amos.boot.module.jxiop.api.entity.StationBasic;
import com.yeejoin.amos.boot.module.jxiop.api.mapper.StationBasicMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.Enum.WarningNameEnum;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.*; import com.yeejoin.amos.boot.module.jxiop.biz.entity.*;
import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.*; import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.*;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.component.emq.EmqKeeper;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -41,6 +53,11 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -41,6 +53,11 @@ public class HealthStatusIndicatorServiceImpl {
@Autowired @Autowired
IdxBizFanWarningRecordMapper idxBizFanWarningRecordMapper; IdxBizFanWarningRecordMapper idxBizFanWarningRecordMapper;
@Autowired
IdxBizPvWarningRecordServiceImpl idxBizPvWarningRecordService;
@Autowired
IdxBizFanWarningRecordServiceImpl idxBizFanWarningRecordService;
/*** /***
* 每一小时获取一次最大粒度内的指数异常数据 * 每一小时获取一次最大粒度内的指数异常数据
* 判断一小时内数据是否符合预警规则 符合则报警并在redis中缓存 同一级别的预警记录下次不生成 * 判断一小时内数据是否符合预警规则 符合则报警并在redis中缓存 同一级别的预警记录下次不生成
...@@ -59,15 +76,38 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -59,15 +76,38 @@ public class HealthStatusIndicatorServiceImpl {
@Autowired @Autowired
IdxBizPvWarningRecordMapper idxBizPvWarningRecordMapper; IdxBizPvWarningRecordMapper idxBizPvWarningRecordMapper;
@Autowired
StationBasicMapper stationBasicMapper;
@Autowired
EmqKeeper emqKeeper;
/**
* 夏造风电分析index_key
*/
public static final String INDEX_KEY_FAN = "XZFX#FX%s#ZNFX";
/**
* 泰和光伏分析 index_key
*/
public static final String INDEX_KEY_PV = "THFX#FXGF#ZNFX";
/**
* 智能分析触发预警系统标识
*/
public static final String SMART_ANALYSE = "smartAnalyse";
/*** /***
* 每一小时获取一次最大粒度内的指数异常数据 * 每一小时获取一次最大粒度内的指数异常数据
* 判断一小时内数据是否符合预警规则 符合则报警并在redis中缓存 同一级别的预警记录下次不生成 * 判断一小时内数据是否符合预警规则 符合则报警并在redis中缓存 同一级别的预警记录下次不生成
* *
*/ */
@Scheduled(cron = "0 0 */1 * * ?") // @Scheduled(cron = "0 0 */1 * * ?")
private void healthWarningMinuteGF() { @Async("async")
Calendar calendar = Calendar.getInstance(); public void healthWarningMinuteGF(Calendar calendar ) {
// Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-1); calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-1);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
...@@ -77,18 +117,26 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -77,18 +117,26 @@ public class HealthStatusIndicatorServiceImpl {
wrapper.ge(IdxBizPvHealthIndex::getRecDate,df.format(calendar.getTime())); wrapper.ge(IdxBizPvHealthIndex::getRecDate,df.format(calendar.getTime()));
wrapper.orderByDesc(IdxBizPvHealthIndex::getRecDate); wrapper.orderByDesc(IdxBizPvHealthIndex::getRecDate);
List<IdxBizPvHealthIndex> healthIndices = idxBizPvHealthIndexMapper.selectList(wrapper); List<IdxBizPvHealthIndex> healthIndices = idxBizPvHealthIndexMapper.selectList(wrapper);
List<String> collect = healthIndices.stream().map(IdxBizPvHealthIndex::getAnalysisObjSeq).collect(Collectors.toList());
if (null == healthIndices ){
return;
}
LambdaQueryWrapper<IdxBizPvWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IdxBizPvWarningRuleSet::getAnalysisType,"按时刻");
queryWrapper.in(IdxBizPvWarningRuleSet::getAnalysisPointId, collect);
List<IdxBizPvWarningRuleSet> idxBizPvWarningRules = idxBizPvWarningRuleSetMapper.selectList(queryWrapper);
Map<String, Map<String, List<IdxBizPvHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizPvHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizPvHealthIndex::getIndexAddress))); Map<String, Map<String, List<IdxBizPvHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizPvHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizPvHealthIndex::getIndexAddress)));
List<IdxBizPvWarningRecord> idxBizPvWarningRecordList = new ArrayList<>();
for (String gateWayId : gateWayMaps.keySet()) { for (String gateWayId : gateWayMaps.keySet()) {
Map<String, List<IdxBizPvHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId); Map<String, List<IdxBizPvHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId);
for (String address : healthDataMaps.keySet()) { for (String address : healthDataMaps.keySet()) {
List<IdxBizPvHealthIndex> idxBizPvHealthIndices = healthDataMaps.get(address); List<IdxBizPvHealthIndex> idxBizPvHealthIndices = healthDataMaps.get(address);
LambdaQueryWrapper<IdxBizPvWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>(); List<IdxBizPvWarningRuleSet> idxBizPvWarningRuleSets = idxBizPvWarningRules.stream().filter(t -> t.getAnalysisPointId().equals(idxBizPvHealthIndices.get(0).getAnalysisObjSeq())).collect(Collectors.toList());
queryWrapper.eq(IdxBizPvWarningRuleSet::getAnalysisType,"按小时"); if (ObjectUtils.isEmpty(idxBizPvWarningRuleSets) ){
queryWrapper.eq(IdxBizPvWarningRuleSet::getAnalysisPointId,idxBizPvHealthIndices.get(0).getAnalysisObjSeq()); continue;
List<IdxBizPvWarningRuleSet> idxBizPvWarningRuleSets = idxBizPvWarningRuleSetMapper.selectList(queryWrapper); }
Double healthValueWarn = 0.0; Double healthValueWarn = 0.0;
Double healthValueRisk = 0.0; Double healthValueRisk = 0.0;
Double healthValueNotice = 0.0; Double healthValueNotice = 0.0;
...@@ -101,15 +149,15 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -101,15 +149,15 @@ public class HealthStatusIndicatorServiceImpl {
for (IdxBizPvWarningRuleSet e : idxBizPvWarningRuleSets) { for (IdxBizPvWarningRuleSet e : idxBizPvWarningRuleSets) {
switch (e.getWarningName()){ switch (e.getWarningName()){
case "警告": case "警告":
healthValueWarn = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueWarn = Double.parseDouble(e.getWarningIf().substring(2));
healthValueMinCount =Long.parseLong(e.getWarningCycle()); healthValueMinCount =Long.parseLong(e.getWarningCycle());
break; break;
case "危险": case "危险":
healthValueRisk = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueRisk = Double.parseDouble(e.getWarningIf().substring(2));
healthValueMinCount =Long.parseLong(e.getWarningCycle()); healthValueMinCount =Long.parseLong(e.getWarningCycle());
break; break;
case "注意": case "注意":
healthValueNotice = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueNotice = Double.parseDouble(e.getWarningIf().substring(2));
healthValueMinCount =Long.parseLong(e.getWarningCycle()); healthValueMinCount =Long.parseLong(e.getWarningCycle());
break; break;
} }
...@@ -126,23 +174,30 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -126,23 +174,30 @@ public class HealthStatusIndicatorServiceImpl {
String level = ""; String level = "";
String content = ""; String content = "";
String num = ""; String num = "";
content = healthValueMinCount + "分钟"; content = healthValueMinCount*10 + "分钟";
if (riskNum >= healthValueMinCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_risk_minute")){ if (noticeNum >= healthValueMinCount ){
redisUtils.set(gateWayId+"_"+address+"_health_risk_minute","risk"); // redisUtils.set(gateWayId+"_"+address+"_health_notice_minute","notice");
level ="危险";
num = ""+healthValueRisk;
}else if (warnNum >= healthValueMinCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_warn_minute") ){
redisUtils.set(gateWayId+"_"+address+"_health_warn_minute","warn");
level ="警告";
num = ""+healthValueWarn;
}else if (noticeNum >= healthValueMinCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_notice_minute")){
redisUtils.set(gateWayId+"_"+address+"_health_notice_minute","notice");
level ="注意"; level ="注意";
num = ""+healthValueNotice; num = ""+healthValueNotice;
}else if (warnNum >= healthValueMinCount ){
// redisUtils.set(gateWayId+"_"+address+"_health_warn_minute","warn");
level ="警告";
num = ""+healthValueWarn;
}else if (riskNum >= healthValueMinCount ){
// redisUtils.set(gateWayId+"_"+address+"_health_risk_minute","risk");
level ="危险";
num = ""+healthValueRisk;
} }
//库里若已存在该测点预警 不生成重复的 若新生预警等级高于历史 则生成
LambdaQueryWrapper<IdxBizPvWarningRecord> query = new LambdaQueryWrapper<>();
query.eq(IdxBizPvWarningRecord::getAnalysisPointId,idxBizPvHealthIndices.get(0).getAnalysisObjSeq());
query.eq(IdxBizPvWarningRecord::getStatus,0);
query.orderByDesc(IdxBizPvWarningRecord::getRecDate);
List<IdxBizPvWarningRecord> idxBizPvWarningRecords = idxBizPvWarningRecordMapper.selectList(query);
if (!level.equals("")){ int flag = ObjectUtils.isEmpty(idxBizPvWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizPvWarningRecords.get(0).getWarningName()) ? 0 :1;
if (!level.equals("") && flag == 0){
IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord(); IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord();
idxBizPvWarningRecord.setRecord(idxBizPvHealthIndices.get(0).getRecord()); idxBizPvWarningRecord.setRecord(idxBizPvHealthIndices.get(0).getRecord());
idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArae()); idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArae());
...@@ -155,11 +210,20 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -155,11 +210,20 @@ public class HealthStatusIndicatorServiceImpl {
idxBizPvWarningRecord.setDisposotionState("未处置"); idxBizPvWarningRecord.setDisposotionState("未处置");
idxBizPvWarningRecord.setStatus("0"); idxBizPvWarningRecord.setStatus("0");
idxBizPvWarningRecord.setWarningName(level); idxBizPvWarningRecord.setWarningName(level);
idxBizPvWarningRecord.setCONTENT("连续"+content+"健康指数<"+num ); idxBizPvWarningRecord.setCONTENT(idxBizPvHealthIndices.get(0).getPointName() + "连续"+content+"健康指数<"+num );
idxBizPvWarningRecordMapper.insert(idxBizPvWarningRecord); idxBizPvWarningRecord.setRecDate(new Date());
idxBizPvWarningRecord.setManufacturer(idxBizPvHealthIndices.get(0).getManufacturer());
idxBizPvWarningRecord.setPointName(idxBizPvHealthIndices.get(0).getPointName());
idxBizPvWarningRecord.setHealthIndexSeq(idxBizPvHealthIndices.get(0).getHealthIndex().toString());
idxBizPvWarningRecord.setHealthLevel(idxBizPvHealthIndices.get(0).getHealthLevel());
idxBizPvWarningRecordList.add(idxBizPvWarningRecord);
// 触发风险模型生成预警处置模块的预警记录
fetchDataPv(idxBizPvWarningRecord);
// idxBizPvWarningRecordMapper.insert(idxBizPvWarningRecord);
} }
} }
} }
idxBizPvWarningRecordService.saveBatch(idxBizPvWarningRecordList);
} }
/*** /***
...@@ -168,8 +232,9 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -168,8 +232,9 @@ public class HealthStatusIndicatorServiceImpl {
* *
*/ */
@Scheduled(cron = "0 0 */5 * * ?") @Scheduled(cron = "0 0 0/1 * * ?")
private void healthWarningHourGF() { @Async("async")
public void healthWarningHourGF() {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-5); calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-5);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
...@@ -180,19 +245,26 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -180,19 +245,26 @@ public class HealthStatusIndicatorServiceImpl {
wrapper.ge(IdxBizPvHealthIndex::getRecDate,df.format(calendar.getTime())); wrapper.ge(IdxBizPvHealthIndex::getRecDate,df.format(calendar.getTime()));
wrapper.orderByDesc(IdxBizPvHealthIndex::getRecDate); wrapper.orderByDesc(IdxBizPvHealthIndex::getRecDate);
List<IdxBizPvHealthIndex> healthIndices = idxBizPvHealthIndexMapper.selectList(wrapper); List<IdxBizPvHealthIndex> healthIndices = idxBizPvHealthIndexMapper.selectList(wrapper);
List<String> collect = healthIndices.stream().map(IdxBizPvHealthIndex::getAnalysisObjSeq).collect(Collectors.toList());
if (null == healthIndices ){
return;
}
LambdaQueryWrapper<IdxBizPvWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IdxBizPvWarningRuleSet::getAnalysisType,"按小时");
queryWrapper.in(IdxBizPvWarningRuleSet::getAnalysisPointId, collect);
List<IdxBizPvWarningRuleSet> idxBizPvWarningRules = idxBizPvWarningRuleSetMapper.selectList(queryWrapper);
Map<String, Map<String, List<IdxBizPvHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizPvHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizPvHealthIndex::getIndexAddress))); Map<String, Map<String, List<IdxBizPvHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizPvHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizPvHealthIndex::getIndexAddress)));
List<IdxBizPvWarningRecord> idxBizPvWarningRecordList = new ArrayList<>();
for (String gateWayId : gateWayMaps.keySet()) { for (String gateWayId : gateWayMaps.keySet()) {
Map<String, List<IdxBizPvHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId); Map<String, List<IdxBizPvHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId);
for (String address : healthDataMaps.keySet()) { for (String address : healthDataMaps.keySet()) {
List<IdxBizPvHealthIndex> idxBizPvHealthIndices = healthDataMaps.get(address); List<IdxBizPvHealthIndex> idxBizPvHealthIndices = healthDataMaps.get(address);
List<IdxBizPvWarningRuleSet> idxBizPvWarningRuleSets = idxBizPvWarningRules.stream().filter(t -> t.getAnalysisPointId().equals(idxBizPvHealthIndices.get(0).getAnalysisObjSeq())).collect(Collectors.toList());
if (ObjectUtils.isEmpty(idxBizPvWarningRuleSets) ){
LambdaQueryWrapper<IdxBizPvWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>(); continue;
queryWrapper.eq(IdxBizPvWarningRuleSet::getAnalysisType,"按小时"); }
queryWrapper.eq(IdxBizPvWarningRuleSet::getAnalysisPointId,idxBizPvHealthIndices.get(0).getAnalysisObjSeq());
List<IdxBizPvWarningRuleSet> idxBizPvWarningRuleSets = idxBizPvWarningRuleSetMapper.selectList(queryWrapper);
Double healthValueWarn = 0.0; Double healthValueWarn = 0.0;
Double healthValueRisk = 0.0; Double healthValueRisk = 0.0;
...@@ -206,15 +278,15 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -206,15 +278,15 @@ public class HealthStatusIndicatorServiceImpl {
for (IdxBizPvWarningRuleSet e : idxBizPvWarningRuleSets) { for (IdxBizPvWarningRuleSet e : idxBizPvWarningRuleSets) {
switch (e.getWarningName()){ switch (e.getWarningName()){
case "警告": case "警告":
healthValueWarn = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueWarn = Double.parseDouble(e.getWarningIf().substring(2));
healthValueHourCount =Long.parseLong(e.getWarningCycle()); healthValueHourCount =Long.parseLong(e.getWarningCycle());
break; break;
case "危险": case "危险":
healthValueRisk = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueRisk = Double.parseDouble(e.getWarningIf().substring(2));
healthValueHourCount =Long.parseLong(e.getWarningCycle()); healthValueHourCount =Long.parseLong(e.getWarningCycle());
break; break;
case "注意": case "注意":
healthValueNotice = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueNotice = Double.parseDouble(e.getWarningIf().substring(2));
healthValueHourCount =Long.parseLong(e.getWarningCycle()); healthValueHourCount =Long.parseLong(e.getWarningCycle());
break; break;
} }
...@@ -233,23 +305,31 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -233,23 +305,31 @@ public class HealthStatusIndicatorServiceImpl {
String content = ""; String content = "";
String num = ""; String num = "";
content = healthValueHourCount + "小时"; content = healthValueHourCount + "小时";
if (riskNum >= healthValueHourCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_risk_hour")){ if (noticeNum >= healthValueHourCount ){
redisUtils.set(gateWayId+"_"+address+"_health_risk_hour","risk");
level ="危险";
num = ""+healthValueRisk;
}else if (warnNum >= healthValueHourCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_risk_hour") ){
redisUtils.set(gateWayId+"_"+address+"_health_warn_hour","warn");
level ="警告";
num = ""+healthValueWarn;
}else if (noticeNum >= healthValueHourCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_notice_hour")){
redisUtils.set(gateWayId+"_"+address+"_health_notice_hour","notice");
level ="注意"; level ="注意";
num = ""+healthValueNotice; num = ""+healthValueNotice;
}else if (warnNum >= healthValueHourCount ){
level ="警告";
num = ""+healthValueWarn;
}else if (riskNum >= healthValueHourCount ){
level ="危险";
num = ""+healthValueRisk;
} }
//库里若已存在该测点预警 不生成重复的 若新生预警等级高于历史 则生成
LambdaQueryWrapper<IdxBizPvWarningRecord> query = new LambdaQueryWrapper<>();
query.eq(IdxBizPvWarningRecord::getAnalysisPointId,idxBizPvHealthIndices.get(0).getAnalysisObjSeq());
query.eq(IdxBizPvWarningRecord::getStatus,0);
query.orderByDesc(IdxBizPvWarningRecord::getRecDate);
List<IdxBizPvWarningRecord> idxBizPvWarningRecords = idxBizPvWarningRecordMapper.selectList(query);
if (!level.equals("")){ int flag = ObjectUtils.isEmpty(idxBizPvWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizPvWarningRecords.get(0).getWarningName()) ? 0 :1;
if (!level.equals("") && flag == 0){
IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord(); IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord();
idxBizPvWarningRecord.setRecord(idxBizPvHealthIndices.get(0).getRecord()); idxBizPvWarningRecord.setRecord(idxBizPvHealthIndices.get(0).getRecord());
idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArae()); idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArae());
...@@ -262,11 +342,20 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -262,11 +342,20 @@ public class HealthStatusIndicatorServiceImpl {
idxBizPvWarningRecord.setDisposotionState("未处置"); idxBizPvWarningRecord.setDisposotionState("未处置");
idxBizPvWarningRecord.setStatus("0"); idxBizPvWarningRecord.setStatus("0");
idxBizPvWarningRecord.setWarningName(level); idxBizPvWarningRecord.setWarningName(level);
idxBizPvWarningRecord.setCONTENT("连续"+content+"健康指数<"+num ); idxBizPvWarningRecord.setCONTENT(idxBizPvHealthIndices.get(0).getPointName() + "连续"+content+"健康指数<"+num );
idxBizPvWarningRecordMapper.insert(idxBizPvWarningRecord); idxBizPvWarningRecord.setRecDate(new Date());
idxBizPvWarningRecord.setManufacturer(idxBizPvHealthIndices.get(0).getManufacturer());
idxBizPvWarningRecord.setPointName(idxBizPvHealthIndices.get(0).getPointName());
idxBizPvWarningRecord.setHealthIndexSeq(idxBizPvHealthIndices.get(0).getHealthIndex().toString());
idxBizPvWarningRecord.setHealthLevel(idxBizPvHealthIndices.get(0).getHealthLevel());
idxBizPvWarningRecordList.add(idxBizPvWarningRecord);
// 触发风险模型生成预警处置模块的预警记录
fetchDataPv(idxBizPvWarningRecord);
//idxBizPvWarningRecordMapper.insert(idxBizPvWarningRecord);
} }
} }
} }
idxBizPvWarningRecordService.saveBatch(idxBizPvWarningRecordList);
} }
/*** /***
...@@ -275,8 +364,9 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -275,8 +364,9 @@ public class HealthStatusIndicatorServiceImpl {
* *
*/ */
@Scheduled(cron = "0 0 0 */3 * ? ") @Scheduled(cron = "0 0 0 0/1 * ? ")
private void healthWarningDayGF() { @Async("async")
public void healthWarningDayGF() {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)-3); calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)-3);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
...@@ -288,19 +378,25 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -288,19 +378,25 @@ public class HealthStatusIndicatorServiceImpl {
wrapper.orderByDesc(IdxBizPvHealthIndex::getRecDate); wrapper.orderByDesc(IdxBizPvHealthIndex::getRecDate);
List<IdxBizPvHealthIndex> healthIndices = idxBizPvHealthIndexMapper.selectList(wrapper); List<IdxBizPvHealthIndex> healthIndices = idxBizPvHealthIndexMapper.selectList(wrapper);
if (null == healthIndices ){
return;
}
List<String> collect = healthIndices.stream().map(IdxBizPvHealthIndex::getAnalysisObjSeq).collect(Collectors.toList());
LambdaQueryWrapper<IdxBizPvWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IdxBizPvWarningRuleSet::getAnalysisType,"按天");
queryWrapper.in(IdxBizPvWarningRuleSet::getAnalysisPointId, collect);
List<IdxBizPvWarningRuleSet> idxBizPvWarningRules = idxBizPvWarningRuleSetMapper.selectList(queryWrapper);
Map<String, Map<String, List<IdxBizPvHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizPvHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizPvHealthIndex::getIndexAddress))); Map<String, Map<String, List<IdxBizPvHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizPvHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizPvHealthIndex::getIndexAddress)));
List<IdxBizPvWarningRecord> idxBizPvWarningRecordList = new ArrayList<>();
for (String gateWayId : gateWayMaps.keySet()) { for (String gateWayId : gateWayMaps.keySet()) {
Map<String, List<IdxBizPvHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId); Map<String, List<IdxBizPvHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId);
for (String address : healthDataMaps.keySet()) { for (String address : healthDataMaps.keySet()) {
List<IdxBizPvHealthIndex> idxBizPvHealthIndices = healthDataMaps.get(address); List<IdxBizPvHealthIndex> idxBizPvHealthIndices = healthDataMaps.get(address);
List<IdxBizPvWarningRuleSet> idxBizPvWarningRuleSets = idxBizPvWarningRules.stream().filter(t -> t.getAnalysisPointId().equals(idxBizPvHealthIndices.get(0).getAnalysisObjSeq())).collect(Collectors.toList());
if (ObjectUtils.isEmpty(idxBizPvWarningRuleSets) ){
LambdaQueryWrapper<IdxBizPvWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>(); continue;
queryWrapper.eq(IdxBizPvWarningRuleSet::getAnalysisType,"按天"); }
queryWrapper.eq(IdxBizPvWarningRuleSet::getAnalysisPointId,idxBizPvHealthIndices.get(0).getAnalysisObjSeq());
List<IdxBizPvWarningRuleSet> idxBizPvWarningRuleSets = idxBizPvWarningRuleSetMapper.selectList(queryWrapper);
Double healthValueWarn = 0.0; Double healthValueWarn = 0.0;
Double healthValueRisk = 0.0; Double healthValueRisk = 0.0;
Double healthValueNotice = 0.0; Double healthValueNotice = 0.0;
...@@ -313,15 +409,15 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -313,15 +409,15 @@ public class HealthStatusIndicatorServiceImpl {
for (IdxBizPvWarningRuleSet e : idxBizPvWarningRuleSets) { for (IdxBizPvWarningRuleSet e : idxBizPvWarningRuleSets) {
switch (e.getWarningName()){ switch (e.getWarningName()){
case "警告": case "警告":
healthValueWarn = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueWarn = Double.parseDouble(e.getWarningIf().substring(2));
healthValueDayCount =Long.parseLong(e.getWarningCycle()); healthValueDayCount =Long.parseLong(e.getWarningCycle());
break; break;
case "危险": case "危险":
healthValueRisk = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueRisk = Double.parseDouble(e.getWarningIf().substring(2));
healthValueDayCount =Long.parseLong(e.getWarningCycle()); healthValueDayCount =Long.parseLong(e.getWarningCycle());
break; break;
case "注意": case "注意":
healthValueNotice = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueNotice = Double.parseDouble(e.getWarningIf().substring(2));
healthValueDayCount =Long.parseLong(e.getWarningCycle()); healthValueDayCount =Long.parseLong(e.getWarningCycle());
break; break;
} }
...@@ -339,21 +435,29 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -339,21 +435,29 @@ public class HealthStatusIndicatorServiceImpl {
String content = ""; String content = "";
String num = ""; String num = "";
content = healthValueDayCount + "天"; content = healthValueDayCount + "天";
if (riskNum >= healthValueDayCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_risk_day")){ if (noticeNum >= healthValueDayCount ){
redisUtils.set(gateWayId+"_"+address+"_health_risk_day","risk"); // redisUtils.set(gateWayId+"_"+address+"_health_notice_day","notice");
level ="危险";
num = ""+healthValueRisk;
}else if (warnNum >= healthValueDayCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_warn_day") ){
redisUtils.set(gateWayId+"_"+address+"_health_warn_day","warn");
level ="警告";
num = ""+healthValueWarn;
}else if (noticeNum >= healthValueDayCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_notice_day")){
redisUtils.set(gateWayId+"_"+address+"_health_notice_day","notice");
level ="注意"; level ="注意";
num = ""+healthValueNotice; num = ""+healthValueNotice;
}else if (warnNum >= healthValueDayCount ){
// redisUtils.set(gateWayId+"_"+address+"_health_warn_day","warn");
level ="警告";
num = ""+healthValueWarn;
}else if (riskNum >= healthValueDayCount ){
// redisUtils.set(gateWayId+"_"+address+"_health_risk_day","risk");
level ="危险";
num = ""+healthValueRisk;
} }
//库里若已存在该测点预警 不生成重复的 若新生预警等级高于历史 则生成
LambdaQueryWrapper<IdxBizPvWarningRecord> query = new LambdaQueryWrapper<>();
query.eq(IdxBizPvWarningRecord::getAnalysisPointId,idxBizPvHealthIndices.get(0).getAnalysisObjSeq());
query.eq(IdxBizPvWarningRecord::getStatus,0);
query.orderByDesc(IdxBizPvWarningRecord::getRecDate);
List<IdxBizPvWarningRecord> idxBizPvWarningRecords = idxBizPvWarningRecordMapper.selectList(query);
int flag = ObjectUtils.isEmpty(idxBizPvWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizPvWarningRecords.get(0).getWarningName()) ? 0 :1;
if (!level.equals("")){ if (!level.equals("") && flag == 0){
IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord(); IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord();
idxBizPvWarningRecord.setRecord(idxBizPvHealthIndices.get(0).getRecord()); idxBizPvWarningRecord.setRecord(idxBizPvHealthIndices.get(0).getRecord());
idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArae()); idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArae());
...@@ -366,17 +470,27 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -366,17 +470,27 @@ public class HealthStatusIndicatorServiceImpl {
idxBizPvWarningRecord.setDisposotionState("未处置"); idxBizPvWarningRecord.setDisposotionState("未处置");
idxBizPvWarningRecord.setStatus("0"); idxBizPvWarningRecord.setStatus("0");
idxBizPvWarningRecord.setWarningName(level); idxBizPvWarningRecord.setWarningName(level);
idxBizPvWarningRecord.setCONTENT("连续"+content+"健康指数<"+num ); idxBizPvWarningRecord.setCONTENT(idxBizPvHealthIndices.get(0).getPointName() + "连续"+content+"健康指数<"+num );
idxBizPvWarningRecordMapper.insert(idxBizPvWarningRecord); idxBizPvWarningRecord.setRecDate(new Date());
idxBizPvWarningRecord.setManufacturer(idxBizPvHealthIndices.get(0).getManufacturer());
idxBizPvWarningRecord.setPointName(idxBizPvHealthIndices.get(0).getPointName());
idxBizPvWarningRecord.setHealthIndexSeq(idxBizPvHealthIndices.get(0).getHealthIndex().toString());
idxBizPvWarningRecord.setHealthLevel(idxBizPvHealthIndices.get(0).getHealthLevel());
idxBizPvWarningRecordList.add(idxBizPvWarningRecord);
// 触发风险模型生成预警处置模块的预警记录
fetchDataPv(idxBizPvWarningRecord);
//idxBizPvWarningRecordMapper.insert(idxBizPvWarningRecord);
} }
} }
} }
idxBizPvWarningRecordService.saveBatch(idxBizPvWarningRecordList);
} }
@Scheduled(cron = "0 0/5 * * * ?") // @Scheduled(cron = "0 0 */1 * * ?")
private void healthWarningMinute() { @Async("async")
Calendar calendar = Calendar.getInstance(); public void healthWarningMinute(Calendar calendar ) {
// Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-1); calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-1);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
...@@ -387,17 +501,29 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -387,17 +501,29 @@ public class HealthStatusIndicatorServiceImpl {
wrapper.orderByDesc(IdxBizFanHealthIndex::getRecDate); wrapper.orderByDesc(IdxBizFanHealthIndex::getRecDate);
List<IdxBizFanHealthIndex> healthIndices = idxBizFanHealthIndexMapper.selectList(wrapper); List<IdxBizFanHealthIndex> healthIndices = idxBizFanHealthIndexMapper.selectList(wrapper);
if (ObjectUtils.isEmpty(healthIndices)){
return;
}
List<String> collect = healthIndices.stream().map(IdxBizFanHealthIndex::getAnalysisObjSeq).collect(Collectors.toList());
LambdaQueryWrapper<IdxBizFanWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IdxBizFanWarningRuleSet::getAnalysisType,"按时刻");
queryWrapper.in(IdxBizFanWarningRuleSet::getAnalysisPointId,collect);
List<IdxBizFanWarningRuleSet> idxBizPvWarningRules = idxBizFanWarningRuleSetMapper.selectList(queryWrapper);
Map<String, Map<String, List<IdxBizFanHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizFanHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizFanHealthIndex::getIndexAddress))); Map<String, Map<String, List<IdxBizFanHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizFanHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizFanHealthIndex::getIndexAddress)));
List<IdxBizFanWarningRecord> idxBizFanWarningRecordList = new ArrayList<>();
for (String gateWayId : gateWayMaps.keySet()) { for (String gateWayId : gateWayMaps.keySet()) {
Map<String, List<IdxBizFanHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId); Map<String, List<IdxBizFanHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId);
for (String address : healthDataMaps.keySet()) { for (String address : healthDataMaps.keySet()) {
List<IdxBizFanHealthIndex> idxBizFanHealthIndices = healthDataMaps.get(address); List<IdxBizFanHealthIndex> idxBizFanHealthIndices = healthDataMaps.get(address);
LambdaQueryWrapper<IdxBizFanWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>(); List<IdxBizFanWarningRuleSet> idxBizPvWarningRuleSets = idxBizPvWarningRules.stream().filter(t -> t.getAnalysisPointId().equals(idxBizFanHealthIndices.get(0).getAnalysisObjSeq())).collect(Collectors.toList());
queryWrapper.eq(IdxBizFanWarningRuleSet::getAnalysisType,"按时刻");
queryWrapper.eq(IdxBizFanWarningRuleSet::getAnalysisPointId,idxBizFanHealthIndices.get(0).getAnalysisObjSeq());
List<IdxBizFanWarningRuleSet> idxBizPvWarningRuleSets = idxBizFanWarningRuleSetMapper.selectList(queryWrapper);
if (ObjectUtils.isEmpty(idxBizPvWarningRuleSets) ){
continue;
}
Double healthValueWarn = 0.0; Double healthValueWarn = 0.0;
Double healthValueRisk = 0.0; Double healthValueRisk = 0.0;
...@@ -411,15 +537,15 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -411,15 +537,15 @@ public class HealthStatusIndicatorServiceImpl {
for (IdxBizFanWarningRuleSet e : idxBizPvWarningRuleSets) { for (IdxBizFanWarningRuleSet e : idxBizPvWarningRuleSets) {
switch (e.getWarningName()){ switch (e.getWarningName()){
case "警告": case "警告":
healthValueWarn = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueWarn = Double.parseDouble(e.getWarningIf().substring(2));
healthValueMinCount =Long.parseLong(e.getWarningCycle()); healthValueMinCount =Long.parseLong(e.getWarningCycle());
break; break;
case "危险": case "危险":
healthValueRisk = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueRisk = Double.parseDouble(e.getWarningIf().substring(2));
healthValueMinCount =Long.parseLong(e.getWarningCycle()); healthValueMinCount =Long.parseLong(e.getWarningCycle());
break; break;
case "注意": case "注意":
healthValueNotice = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueNotice = Double.parseDouble(e.getWarningIf().substring(2));
healthValueMinCount =Long.parseLong(e.getWarningCycle()); healthValueMinCount =Long.parseLong(e.getWarningCycle());
break; break;
} }
...@@ -439,23 +565,31 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -439,23 +565,31 @@ public class HealthStatusIndicatorServiceImpl {
String level = ""; String level = "";
String content = ""; String content = "";
String num = ""; String num = "";
content = healthValueMinCount + "分钟"; content = healthValueMinCount*10 + "分钟";
if (riskNum >= healthValueMinCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_risk_minute")){ if (noticeNum >= healthValueMinCount ){
redisUtils.set(gateWayId+"_"+address+"_health_risk_minute","risk"); // redisUtils.set(gateWayId+"_"+address+"_health_notice_day","notice");
level ="危险";
num = ""+healthValueRisk;
}else if (warnNum >= healthValueMinCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_warn_minute") ){
redisUtils.set(gateWayId+"_"+address+"_health_warn_minute","warn");
level ="警告";
num = ""+healthValueWarn;
}else if (noticeNum >= healthValueMinCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_notice_minute")){
redisUtils.set(gateWayId+"_"+address+"_health_notice_minute","notice");
level ="注意"; level ="注意";
num = ""+healthValueNotice; num = ""+healthValueNotice;
} }
else if (warnNum >= healthValueMinCount ){
// redisUtils.set(gateWayId+"_"+address+"_health_warn_day","warn");
level ="警告";
num = ""+healthValueWarn;
}else if (riskNum >= healthValueMinCount ){
// redisUtils.set(gateWayId+"_"+address+"_health_risk_day","risk");
level ="危险";
num = ""+healthValueRisk;
}
//库里若已存在该测点预警 不生成重复的 若新生预警等级高于历史 则生成
LambdaQueryWrapper<IdxBizFanWarningRecord> query = new LambdaQueryWrapper<>();
query.eq(IdxBizFanWarningRecord::getAnalysisPointId,idxBizFanHealthIndices.get(0).getAnalysisObjSeq());
query.eq(IdxBizFanWarningRecord::getStatus,0);
query.orderByDesc(IdxBizFanWarningRecord::getRecDate);
List<IdxBizFanWarningRecord> idxBizFanWarningRecords = idxBizFanWarningRecordMapper.selectList(query);
if (!level.equals("")){ int flag = ObjectUtils.isEmpty(idxBizFanWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizFanWarningRecords.get(0).getWarningName()) ? 0 :1;
if (!level.equals("") && flag == 0){
IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord(); IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord();
idxBizFanWarningRecord.setRecord(idxBizFanHealthIndices.get(0).getRecord()); idxBizFanWarningRecord.setRecord(idxBizFanHealthIndices.get(0).getRecord());
idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArae()); idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArae());
...@@ -468,11 +602,20 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -468,11 +602,20 @@ public class HealthStatusIndicatorServiceImpl {
idxBizFanWarningRecord.setDisposotionState("未处置"); idxBizFanWarningRecord.setDisposotionState("未处置");
idxBizFanWarningRecord.setStatus("0"); idxBizFanWarningRecord.setStatus("0");
idxBizFanWarningRecord.setWarningName(level); idxBizFanWarningRecord.setWarningName(level);
idxBizFanWarningRecord.setCONTENT("连续"+content+"健康指数<"+num ); idxBizFanWarningRecord.setCONTENT(idxBizFanHealthIndices.get(0).getPointName() + "连续"+content+"健康指数<"+num );
idxBizFanWarningRecordMapper.insert(idxBizFanWarningRecord); idxBizFanWarningRecord.setRecDate(new Date());
idxBizFanWarningRecord.setNumber(idxBizFanHealthIndices.get(0).getNumber());
idxBizFanWarningRecord.setPointName(idxBizFanHealthIndices.get(0).getPointName());
idxBizFanWarningRecord.setHealthIndexSeq(idxBizFanHealthIndices.get(0).getHealthIndex().toString());
idxBizFanWarningRecord.setHealthLevel(idxBizFanHealthIndices.get(0).getHealthLevel());
idxBizFanWarningRecordList.add(idxBizFanWarningRecord);
// 触发风险模型生成预警处置模块的预警记录
fetchDataFan(idxBizFanWarningRecord);
//idxBizFanWarningRecordMapper.insert(idxBizFanWarningRecord);
} }
} }
} }
idxBizFanWarningRecordService.saveBatch(idxBizFanWarningRecordList);
} }
/*** /***
...@@ -481,8 +624,9 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -481,8 +624,9 @@ public class HealthStatusIndicatorServiceImpl {
* *
*/ */
@Scheduled(cron = "0 0 */5 * * ?") @Scheduled(cron = "0 0 0/1 * * ?")
private void healthWarningHour() { @Async("async")
public void healthWarningHour() {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-5); calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-5);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
...@@ -493,19 +637,28 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -493,19 +637,28 @@ public class HealthStatusIndicatorServiceImpl {
wrapper.ge(IdxBizFanHealthIndex::getRecDate,df.format(calendar.getTime())); wrapper.ge(IdxBizFanHealthIndex::getRecDate,df.format(calendar.getTime()));
wrapper.orderByDesc(IdxBizFanHealthIndex::getRecDate); wrapper.orderByDesc(IdxBizFanHealthIndex::getRecDate);
List<IdxBizFanHealthIndex> healthIndices = idxBizFanHealthIndexMapper.selectList(wrapper); List<IdxBizFanHealthIndex> healthIndices = idxBizFanHealthIndexMapper.selectList(wrapper);
if (ObjectUtils.isEmpty(healthIndices)){
return;
}
List<String> collect = healthIndices.stream().map(IdxBizFanHealthIndex::getAnalysisObjSeq).collect(Collectors.toList());
LambdaQueryWrapper<IdxBizFanWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IdxBizFanWarningRuleSet::getAnalysisType,"小时");
queryWrapper.in(IdxBizFanWarningRuleSet::getAnalysisPointId,collect);
List<IdxBizFanWarningRuleSet> idxBizPvWarningRules = idxBizFanWarningRuleSetMapper.selectList(queryWrapper);
Map<String, Map<String, List<IdxBizFanHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizFanHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizFanHealthIndex::getIndexAddress))); Map<String, Map<String, List<IdxBizFanHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizFanHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizFanHealthIndex::getIndexAddress)));
List<IdxBizFanWarningRecord> idxBizFanWarningRecordList = new ArrayList<>();
for (String gateWayId : gateWayMaps.keySet()) { for (String gateWayId : gateWayMaps.keySet()) {
Map<String, List<IdxBizFanHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId); Map<String, List<IdxBizFanHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId);
for (String address : healthDataMaps.keySet()) { for (String address : healthDataMaps.keySet()) {
List<IdxBizFanHealthIndex> idxBizFanHealthIndices = healthDataMaps.get(address); List<IdxBizFanHealthIndex> idxBizFanHealthIndices = healthDataMaps.get(address);
LambdaQueryWrapper<IdxBizFanWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>(); List<IdxBizFanWarningRuleSet> idxBizPvWarningRuleSets = idxBizPvWarningRules.stream().filter(t -> t.getAnalysisPointId().equals(idxBizFanHealthIndices.get(0).getAnalysisObjSeq())).collect(Collectors.toList());
queryWrapper.eq(IdxBizFanWarningRuleSet::getAnalysisType,"按小时");
queryWrapper.eq(IdxBizFanWarningRuleSet::getAnalysisPointId,idxBizFanHealthIndices.get(0).getAnalysisObjSeq());
List<IdxBizFanWarningRuleSet> idxBizPvWarningRuleSets = idxBizFanWarningRuleSetMapper.selectList(queryWrapper);
if (ObjectUtils.isEmpty(idxBizPvWarningRuleSets) ){
continue;
}
Double healthValueWarn = 0.0; Double healthValueWarn = 0.0;
Double healthValueRisk = 0.0; Double healthValueRisk = 0.0;
Double healthValueNotice = 0.0; Double healthValueNotice = 0.0;
...@@ -518,15 +671,15 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -518,15 +671,15 @@ public class HealthStatusIndicatorServiceImpl {
for (IdxBizFanWarningRuleSet e : idxBizPvWarningRuleSets) { for (IdxBizFanWarningRuleSet e : idxBizPvWarningRuleSets) {
switch (e.getWarningName()){ switch (e.getWarningName()){
case "警告": case "警告":
healthValueWarn = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueWarn = Double.parseDouble(e.getWarningIf().substring(2));
healthValueHourCount =Long.parseLong(e.getWarningCycle()); healthValueHourCount =Long.parseLong(e.getWarningCycle());
break; break;
case "危险": case "危险":
healthValueRisk = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueRisk = Double.parseDouble(e.getWarningIf().substring(2));
healthValueHourCount =Long.parseLong(e.getWarningCycle()); healthValueHourCount =Long.parseLong(e.getWarningCycle());
break; break;
case "注意": case "注意":
healthValueNotice = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueNotice = Double.parseDouble(e.getWarningIf().substring(2));
healthValueHourCount =Long.parseLong(e.getWarningCycle()); healthValueHourCount =Long.parseLong(e.getWarningCycle());
break; break;
} }
...@@ -546,23 +699,26 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -546,23 +699,26 @@ public class HealthStatusIndicatorServiceImpl {
String content = ""; String content = "";
String num = ""; String num = "";
content = healthValueHourCount + "小时"; content = healthValueHourCount + "小时";
if (riskNum >= healthValueHourCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_risk_hour")){ if(noticeNum >= healthValueHourCount ){
redisUtils.set(gateWayId+"_"+address+"_health_risk_hour","risk");
level ="危险";
num = ""+healthValueRisk;
}else if (warnNum >= healthValueHourCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_risk_hour") ){
redisUtils.set(gateWayId+"_"+address+"_health_warn_hour","warn");
level ="警告";
num = ""+healthValueWarn;
}else if (noticeNum >= healthValueHourCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_notice_hour")){
redisUtils.set(gateWayId+"_"+address+"_health_notice_hour","notice");
level ="注意"; level ="注意";
num = ""+healthValueNotice; num = ""+healthValueNotice;
}else if (warnNum >= healthValueHourCount ){
level ="警告";
num = ""+healthValueWarn;
}else if (riskNum >= healthValueHourCount ){
level ="危险";
num = ""+healthValueRisk;
} }
LambdaQueryWrapper<IdxBizFanWarningRecord> query = new LambdaQueryWrapper<>();
query.eq(IdxBizFanWarningRecord::getAnalysisPointId,idxBizFanHealthIndices.get(0).getAnalysisObjSeq());
query.eq(IdxBizFanWarningRecord::getStatus,0);
query.orderByDesc(IdxBizFanWarningRecord::getRecDate);
List<IdxBizFanWarningRecord> idxBizFanWarningRecords = idxBizFanWarningRecordMapper.selectList(query);
if (!level.equals("")){ int flag = ObjectUtils.isEmpty(idxBizFanWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizFanWarningRecords.get(0).getWarningName()) ? 0 :1;
if (!level.equals("") && flag == 0){
IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord(); IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord();
idxBizFanWarningRecord.setRecord(idxBizFanHealthIndices.get(0).getRecord()); idxBizFanWarningRecord.setRecord(idxBizFanHealthIndices.get(0).getRecord());
idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArae()); idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArae());
...@@ -575,11 +731,20 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -575,11 +731,20 @@ public class HealthStatusIndicatorServiceImpl {
idxBizFanWarningRecord.setDisposotionState("未处置"); idxBizFanWarningRecord.setDisposotionState("未处置");
idxBizFanWarningRecord.setStatus("0"); idxBizFanWarningRecord.setStatus("0");
idxBizFanWarningRecord.setWarningName(level); idxBizFanWarningRecord.setWarningName(level);
idxBizFanWarningRecord.setCONTENT("连续"+content+"健康指数<"+num ); idxBizFanWarningRecord.setCONTENT(idxBizFanHealthIndices.get(0).getPointName() + "连续"+content+"健康指数<"+num );
idxBizFanWarningRecordMapper.insert(idxBizFanWarningRecord); idxBizFanWarningRecord.setRecDate(new Date());
idxBizFanWarningRecord.setNumber(idxBizFanHealthIndices.get(0).getNumber());
idxBizFanWarningRecord.setHealthIndexSeq(idxBizFanHealthIndices.get(0).getHealthIndex().toString());
idxBizFanWarningRecord.setHealthLevel(idxBizFanHealthIndices.get(0).getHealthLevel());
idxBizFanWarningRecord.setPointName(idxBizFanHealthIndices.get(0).getPointName());
idxBizFanWarningRecordList.add(idxBizFanWarningRecord);
// 触发风险模型生成预警处置模块的预警记录
fetchDataFan(idxBizFanWarningRecord);
} }
} }
} }
idxBizFanWarningRecordService.saveBatch(idxBizFanWarningRecordList);
} }
/*** /***
...@@ -588,8 +753,9 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -588,8 +753,9 @@ public class HealthStatusIndicatorServiceImpl {
* *
*/ */
@Scheduled(cron = "0 0 0 */3 * ? ") @Scheduled(cron = "0 0 0 0/1 * ? ")
private void healthWarningDay() { @Async("async")
public void healthWarningDay() {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)-3); calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)-3);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
...@@ -600,40 +766,48 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -600,40 +766,48 @@ public class HealthStatusIndicatorServiceImpl {
wrapper.ge(IdxBizFanHealthIndex::getRecDate,df.format(calendar.getTime())); wrapper.ge(IdxBizFanHealthIndex::getRecDate,df.format(calendar.getTime()));
wrapper.orderByDesc(IdxBizFanHealthIndex::getRecDate); wrapper.orderByDesc(IdxBizFanHealthIndex::getRecDate);
List<IdxBizFanHealthIndex> healthIndices = idxBizFanHealthIndexMapper.selectList(wrapper); List<IdxBizFanHealthIndex> healthIndices = idxBizFanHealthIndexMapper.selectList(wrapper);
if (ObjectUtils.isEmpty(healthIndices)){
return;
}
List<String> collect = healthIndices.stream().map(IdxBizFanHealthIndex::getAnalysisObjSeq).collect(Collectors.toList());
LambdaQueryWrapper<IdxBizFanWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IdxBizFanWarningRuleSet::getAnalysisType,"按天");
queryWrapper.in(IdxBizFanWarningRuleSet::getAnalysisPointId,collect);
List<IdxBizFanWarningRuleSet> idxBizPvWarningRules = idxBizFanWarningRuleSetMapper.selectList(queryWrapper);
Map<String, Map<String, List<IdxBizFanHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizFanHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizFanHealthIndex::getIndexAddress))); Map<String, Map<String, List<IdxBizFanHealthIndex>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(IdxBizFanHealthIndex::getGatewayId, Collectors.groupingBy(IdxBizFanHealthIndex::getIndexAddress)));
List<IdxBizFanWarningRecord> idxBizFanWarningRecordList = new ArrayList<>();
for (String gateWayId : gateWayMaps.keySet()) { for (String gateWayId : gateWayMaps.keySet()) {
Map<String, List<IdxBizFanHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId); Map<String, List<IdxBizFanHealthIndex>> healthDataMaps = gateWayMaps.get(gateWayId);
for (String address : healthDataMaps.keySet()) { for (String address : healthDataMaps.keySet()) {
List<IdxBizFanHealthIndex> idxBizFanHealthIndices = healthDataMaps.get(address); List<IdxBizFanHealthIndex> idxBizFanHealthIndices = healthDataMaps.get(address);
LambdaQueryWrapper<IdxBizFanWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>(); List<IdxBizFanWarningRuleSet> idxBizPvWarningRuleSets = idxBizPvWarningRules.stream().filter(t -> t.getAnalysisPointId().equals(idxBizFanHealthIndices.get(0).getAnalysisObjSeq())).collect(Collectors.toList());
queryWrapper.eq(IdxBizFanWarningRuleSet::getAnalysisType,"按天");
queryWrapper.eq(IdxBizFanWarningRuleSet::getAnalysisPointId,idxBizFanHealthIndices.get(0).getAnalysisObjSeq());
List<IdxBizFanWarningRuleSet> idxBizPvWarningRuleSets = idxBizFanWarningRuleSetMapper.selectList(queryWrapper);
if (ObjectUtils.isEmpty(idxBizPvWarningRuleSets) ){
continue;
}
Double healthValueWarn = 0.0; Double healthValueWarn = 0.0;
Double healthValueRisk = 0.0; Double healthValueRisk = 0.0;
Double healthValueNotice = 0.0; Double healthValueNotice = 0.0;
long healthValueDayCount = 0; long healthValueDayCount = 0;
long healthValueHourCount = 0;
long healthValueMinCount = 0;
for (IdxBizFanWarningRuleSet e : idxBizPvWarningRuleSets) { for (IdxBizFanWarningRuleSet e : idxBizPvWarningRuleSets) {
switch (e.getWarningName()){ switch (e.getWarningName()){
case "警告": case "警告":
healthValueWarn = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueWarn = Double.parseDouble(e.getWarningIf().substring(2));
healthValueDayCount =Long.parseLong(e.getWarningCycle()); healthValueDayCount =Long.parseLong(e.getWarningCycle());
break; break;
case "危险": case "危险":
healthValueRisk = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueRisk = Double.parseDouble(e.getWarningIf().substring(2));
healthValueDayCount =Long.parseLong(e.getWarningCycle()); healthValueDayCount =Long.parseLong(e.getWarningCycle());
break; break;
case "注意": case "注意":
healthValueNotice = Double.parseDouble(e.getWarningIf().substring(e.getWarningIf().length()-2)); healthValueNotice = Double.parseDouble(e.getWarningIf().substring(2));
healthValueDayCount =Long.parseLong(e.getWarningCycle()); healthValueDayCount =Long.parseLong(e.getWarningCycle());
break; break;
} }
...@@ -654,21 +828,29 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -654,21 +828,29 @@ public class HealthStatusIndicatorServiceImpl {
String content = ""; String content = "";
String num = ""; String num = "";
content = healthValueDayCount + "天"; content = healthValueDayCount + "天";
if (riskNum >= healthValueDayCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_risk_day")){ if (noticeNum >= healthValueDayCount ){
redisUtils.set(gateWayId+"_"+address+"_health_risk_day","risk"); // redisUtils.set(gateWayId+"_"+address+"_health_notice_day","notice");
level ="危险";
num = ""+healthValueRisk;
}else if (warnNum >= healthValueDayCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_warn_day") ){
redisUtils.set(gateWayId+"_"+address+"_health_warn_day","warn");
level ="警告";
num = ""+healthValueWarn;
}else if (noticeNum >= healthValueDayCount && !redisUtils.hasKey(gateWayId+"_"+address+"_health_notice_day")){
redisUtils.set(gateWayId+"_"+address+"_health_notice_day","notice");
level ="注意"; level ="注意";
num = ""+healthValueNotice; num = ""+healthValueNotice;
} }
else if (warnNum >= healthValueDayCount ){
// redisUtils.set(gateWayId+"_"+address+"_health_warn_day","warn");
level ="警告";
num = ""+healthValueWarn;
}else if (riskNum >= healthValueDayCount ){
// redisUtils.set(gateWayId+"_"+address+"_health_risk_day","risk");
level ="危险";
num = ""+healthValueRisk;
}
if (!level.equals("")){ LambdaQueryWrapper<IdxBizFanWarningRecord> query = new LambdaQueryWrapper<>();
query.eq(IdxBizFanWarningRecord::getAnalysisPointId,idxBizFanHealthIndices.get(0).getAnalysisObjSeq());
query.eq(IdxBizFanWarningRecord::getStatus,0);
query.orderByDesc(IdxBizFanWarningRecord::getRecDate);
List<IdxBizFanWarningRecord> idxBizFanWarningRecords = idxBizFanWarningRecordMapper.selectList(query);
int flag = ObjectUtils.isEmpty(idxBizFanWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizFanWarningRecords.get(0).getWarningName()) ? 0 :1;
if (!level.equals("") && flag == 0){
IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord(); IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord();
idxBizFanWarningRecord.setRecord(idxBizFanHealthIndices.get(0).getRecord()); idxBizFanWarningRecord.setRecord(idxBizFanHealthIndices.get(0).getRecord());
idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArae()); idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArae());
...@@ -681,11 +863,96 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -681,11 +863,96 @@ public class HealthStatusIndicatorServiceImpl {
idxBizFanWarningRecord.setDisposotionState("未处置"); idxBizFanWarningRecord.setDisposotionState("未处置");
idxBizFanWarningRecord.setStatus("0"); idxBizFanWarningRecord.setStatus("0");
idxBizFanWarningRecord.setWarningName(level); idxBizFanWarningRecord.setWarningName(level);
idxBizFanWarningRecord.setCONTENT("连续"+content+"健康指数<"+num ); idxBizFanWarningRecord.setCONTENT(idxBizFanHealthIndices.get(0).getPointName() + "连续"+content+"健康指数<"+num );
idxBizFanWarningRecordMapper.insert(idxBizFanWarningRecord); idxBizFanWarningRecord.setRecDate(new Date());
idxBizFanWarningRecord.setNumber(idxBizFanHealthIndices.get(0).getNumber());
idxBizFanWarningRecord.setHealthIndexSeq(idxBizFanHealthIndices.get(0).getHealthIndex().toString());
idxBizFanWarningRecord.setHealthLevel(idxBizFanHealthIndices.get(0).getHealthLevel());
idxBizFanWarningRecord.setPointName(idxBizFanHealthIndices.get(0).getPointName());
idxBizFanWarningRecordList.add(idxBizFanWarningRecord);
// 触发风险模型生成预警处置模块的预警记录
fetchDataFan(idxBizFanWarningRecord);
}
} }
} }
idxBizFanWarningRecordService.saveBatch(idxBizFanWarningRecordList);
} }
/**
* 光伏 - 触发预控模型生成预警
* @param idxBizPvWarningRecord
* @return
*/
@Async
public void fetchDataPv(IdxBizPvWarningRecord idxBizPvWarningRecord) {
BizMessage bizMessage = new BizMessage();
bizMessage.setIndexKey(INDEX_KEY_PV);
bizMessage.setIndexValue(idxBizPvWarningRecord.getPointName());
bizMessage.setTraceId(idxBizPvWarningRecord.getSequenceNbr());
RiskBizInfoVo riskBizInfoVo = new RiskBizInfoVo();
riskBizInfoVo.setWarningObjectName(idxBizPvWarningRecord.getEquipmentName());
riskBizInfoVo.setWarningObjectCode(idxBizPvWarningRecord.getSequenceNbr());
LambdaQueryWrapper<StationBasic> basicLambdaQueryWrapper = new LambdaQueryWrapper<>();
basicLambdaQueryWrapper.eq(StationBasic::getFanGatewayId, idxBizPvWarningRecord.getGatewayId());
basicLambdaQueryWrapper.last("limit 1");
StationBasic stationBasic = stationBasicMapper.selectOne(basicLambdaQueryWrapper);
riskBizInfoVo.setSourceAttribution(stationBasic.getProjectOrgCode());
riskBizInfoVo.setSourceAttributionDesc(idxBizPvWarningRecord.getStation());
riskBizInfoVo.setWarningObjectType("pv");
List<RiskDynamicDetailsVo> detailsVos = new ArrayList<>();
RiskDynamicDetailsVo dynamicDetailsVo = new RiskDynamicDetailsVo();
dynamicDetailsVo.setTabName("预警详情");
detailsVos.add(dynamicDetailsVo);
riskBizInfoVo.setDynamicDetails(detailsVos);
bizMessage.setBizInfo(riskBizInfoVo);
try {
emqKeeper.getMqttClient().publish(SMART_ANALYSE + "/data/analysis", JSON.toJSONString(bizMessage).getBytes(StandardCharsets.UTF_8), 2, false);
} catch (MqttException e) {
e.printStackTrace();
}
}
/**
* 风电 - 触发预控模型生成预警
* @param idxBizFanWarningRecord
* @return
*/
@Async
public void fetchDataFan(IdxBizFanWarningRecord idxBizFanWarningRecord) {
BizMessage bizMessage = new BizMessage();
bizMessage.setIndexKey(String.format(INDEX_KEY_FAN, idxBizFanWarningRecord.getNumber()));
bizMessage.setIndexValue(idxBizFanWarningRecord.getPointName());
bizMessage.setTraceId(idxBizFanWarningRecord.getSequenceNbr());
RiskBizInfoVo riskBizInfoVo = new RiskBizInfoVo();
riskBizInfoVo.setWarningObjectName(idxBizFanWarningRecord.getEquipmentName());
riskBizInfoVo.setWarningObjectCode(idxBizFanWarningRecord.getSequenceNbr());
LambdaQueryWrapper<StationBasic> basicLambdaQueryWrapper = new LambdaQueryWrapper<>();
basicLambdaQueryWrapper.eq(StationBasic::getFanGatewayId, idxBizFanWarningRecord.getGatewayId());
basicLambdaQueryWrapper.last("limit 1");
StationBasic stationBasic = stationBasicMapper.selectOne(basicLambdaQueryWrapper);
riskBizInfoVo.setSourceAttribution(stationBasic.getProjectOrgCode());
riskBizInfoVo.setSourceAttributionDesc(idxBizFanWarningRecord.getStation());
riskBizInfoVo.setWarningObjectType("fan");
List<RiskDynamicDetailsVo> detailsVos = new ArrayList<>();
RiskDynamicDetailsVo dynamicDetailsVo = new RiskDynamicDetailsVo();
dynamicDetailsVo.setTabName("预警详情");
detailsVos.add(dynamicDetailsVo);
riskBizInfoVo.setDynamicDetails(detailsVos);
bizMessage.setBizInfo(riskBizInfoVo);
try {
emqKeeper.getMqttClient().publish(SMART_ANALYSE + "/data/analysis", JSON.toJSONString(bizMessage).getBytes(StandardCharsets.UTF_8), 2, false);
} catch (MqttException e) {
e.printStackTrace();
} }
}
} }
...@@ -277,11 +277,13 @@ ...@@ -277,11 +277,13 @@
<select id="getAllEquipAlarmInfoAnalysisByStationType" resultType="java.util.Map"> <select id="getAllEquipAlarmInfoAnalysisByStationType" resultType="java.util.Map">
SELECT SELECT
( SELECT POINT_NAME FROM ${tableName2} WHERE GATEWAY_ID = a.GATEWAY_ID AND INDEX_ADDRESS = a.INDEX_ADDRESS ) AS pointName, <!-- ( SELECT POINT_NAME FROM ${tableName2} WHERE GATEWAY_ID = a.GATEWAY_ID AND INDEX_ADDRESS = a.INDEX_ADDRESS ) AS pointName,-->
b.POINT_NAME as pointName,
a.WARNING_NAME as warningName, a.WARNING_NAME as warningName,
count(1) as num count(1) as num
FROM FROM
${tableName} a ${tableName} a
LEFT JOIN ${tableName2} b on b.GATEWAY_ID = a.GATEWAY_ID and b.INDEX_ADDRESS = a.INDEX_ADDRESS
<where> <where>
<if test="areaCode != null and areaCode != ''"> <if test="areaCode != null and areaCode != ''">
a.ARAE like concat('%', #{areaCode}, '%') a.ARAE like concat('%', #{areaCode}, '%')
...@@ -299,33 +301,35 @@ ...@@ -299,33 +301,35 @@
FROM FROM
( (
SELECT SELECT
( SELECT POINT_NAME FROM idx_biz_pv_point_process_variable_classification WHERE GATEWAY_ID = idx_biz_pv_warning_record.GATEWAY_ID AND INDEX_ADDRESS = idx_biz_pv_warning_record.INDEX_ADDRESS ) AS pointName, wr.WARNING_NAME AS warningName,
WARNING_NAME AS warningName, vc.POINT_NAME AS pointName,
count( 1 ) AS num count( 1 ) AS num
FROM FROM
idx_biz_pv_warning_record idx_biz_pv_warning_record wr
LEFT JOIN idx_biz_pv_point_process_variable_classification vc on vc.GATEWAY_ID = wr.GATEWAY_ID and vc.INDEX_ADDRESS = wr.INDEX_ADDRESS
<where> <where>
<if test="areaCode != null and areaCode != ''"> <if test="areaCode != null and areaCode != ''">
ARAE like concat('%', #{areaCode}, '%') wr.ARAE like concat('%', #{areaCode}, '%')
</if> </if>
</where> </where>
GROUP BY GROUP BY
pointName, pointName,
WARNING_NAME UNION ALL warningName UNION ALL
SELECT SELECT
( SELECT POINT_NAME FROM idx_biz_fan_point_process_variable_classification WHERE GATEWAY_ID = idx_biz_fan_warning_record.GATEWAY_ID AND INDEX_ADDRESS = idx_biz_fan_warning_record.INDEX_ADDRESS ) AS pointName, wr.WARNING_NAME AS warningName,
WARNING_NAME AS warningName, vc.POINT_NAME AS pointName,
count( 1 ) AS num count( 1 ) AS num
FROM FROM
idx_biz_fan_warning_record idx_biz_fan_warning_record wr
LEFT JOIN idx_biz_fan_point_process_variable_classification vc on vc.GATEWAY_ID = wr.GATEWAY_ID and vc.INDEX_ADDRESS = wr.INDEX_ADDRESS
<where> <where>
<if test="areaCode != null and areaCode != ''"> <if test="areaCode != null and areaCode != ''">
ARAE like concat('%', #{areaCode}, '%') wr.ARAE like concat('%', #{areaCode}, '%')
</if> </if>
</where> </where>
GROUP BY GROUP BY
pointName, pointName,
WARNING_NAME warningName
) a ) a
WHERE WHERE
a.pointName IS NOT NULL a.pointName IS NOT NULL
...@@ -339,7 +343,7 @@ ...@@ -339,7 +343,7 @@
FROM FROM
idx_biz_fan_health_index idx_biz_fan_health_index
<where> <where>
ANALYSIS_OBJ_TYPE = '场站' ANALYSIS_OBJ_TYPE = '子系统'
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
<if test="equipmentName != null and equipmentName != ''"> <if test="equipmentName != null and equipmentName != ''">
...@@ -378,7 +382,7 @@ ...@@ -378,7 +382,7 @@
FROM FROM
idx_biz_fan_health_index idx_biz_fan_health_index
<where> <where>
ANALYSIS_OBJ_TYPE = '场站' ANALYSIS_OBJ_TYPE = '设备'
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
<if test="gatewayId != null and gatewayId != ''"> <if test="gatewayId != null and gatewayId != ''">
...@@ -490,8 +494,7 @@ ...@@ -490,8 +494,7 @@
FROM FROM
idx_biz_pv_health_index idx_biz_pv_health_index
<where> <where>
STATION IS NOT NULL ANALYSIS_OBJ_TYPE = '子阵'
AND STATION != ''
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
<if test="gatewayId != null and gatewayId != ''"> <if test="gatewayId != null and gatewayId != ''">
...@@ -509,8 +512,7 @@ ...@@ -509,8 +512,7 @@
FROM FROM
idx_biz_pv_health_index idx_biz_pv_health_index
<where> <where>
STATION IS NOT NULL ANALYSIS_OBJ_TYPE = '设备'
AND STATION != ''
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
<if test="subarray != null and subarray != ''"> <if test="subarray != null and subarray != ''">
...@@ -555,8 +557,7 @@ ...@@ -555,8 +557,7 @@
FROM FROM
idx_biz_pv_health_index idx_biz_pv_health_index
<where> <where>
STATION IS NOT NULL ANALYSIS_OBJ_TYPE = '测点'
AND STATION != ''
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
AND POINT_NAME IS NOT NULL AND POINT_NAME IS NOT NULL
...@@ -616,7 +617,14 @@ ...@@ -616,7 +617,14 @@
FROM FROM
idx_biz_fan_point_process_variable_classification idx_biz_fan_point_process_variable_classification
WHERE WHERE
TAG_CODE = '分析变量' UNION ALL TAG_CODE = '分析变量'
AND ARAE is not null
AND STATION is not null
AND EQUIPMENT_NAME is not null
AND SUB_SYSTEM is not null
AND POINT_NAME is not null
AND INDEX_ADDRESS is not null
UNION ALL
SELECT SELECT
ARAE AS area, ARAE AS area,
STATION AS station, STATION AS station,
...@@ -628,6 +636,12 @@ ...@@ -628,6 +636,12 @@
idx_biz_pv_point_process_variable_classification idx_biz_pv_point_process_variable_classification
WHERE WHERE
TAG_CODE = '分析变量' TAG_CODE = '分析变量'
AND ARAE is not null
AND STATION is not null
AND SUBARRAY is not null
AND EQUIPMENT_NAME is not null
AND POINT_NAME is not null
AND INDEX_ADDRESS is not null
) a ) a
</select> </select>
...@@ -643,8 +657,7 @@ ...@@ -643,8 +657,7 @@
FROM FROM
idx_biz_fan_health_index idx_biz_fan_health_index
WHERE WHERE
STATION IS NOT NULL ANALYSIS_OBJ_TYPE = '场站'
AND STATION != ''
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
GROUP BY GROUP BY
...@@ -656,8 +669,7 @@ ...@@ -656,8 +669,7 @@
FROM FROM
idx_biz_pv_health_index idx_biz_pv_health_index
WHERE WHERE
STATION IS NOT NULL ANALYSIS_OBJ_TYPE = '场站'
AND STATION != ''
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
GROUP BY GROUP BY
...@@ -680,8 +692,7 @@ ...@@ -680,8 +692,7 @@
FROM FROM
idx_biz_fan_health_index idx_biz_fan_health_index
WHERE WHERE
STATION IS NOT NULL ANALYSIS_OBJ_TYPE = '设备'
AND STATION != ''
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
GROUP BY GROUP BY
...@@ -693,8 +704,7 @@ ...@@ -693,8 +704,7 @@
FROM FROM
idx_biz_pv_health_index idx_biz_pv_health_index
WHERE WHERE
STATION IS NOT NULL ANALYSIS_OBJ_TYPE = '子阵'
AND STATION != ''
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
GROUP BY GROUP BY
...@@ -718,8 +728,7 @@ ...@@ -718,8 +728,7 @@
FROM FROM
idx_biz_fan_health_index idx_biz_fan_health_index
WHERE WHERE
STATION IS NOT NULL ANALYSIS_OBJ_TYPE = '子系统'
AND STATION != ''
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
GROUP BY GROUP BY
...@@ -731,8 +740,7 @@ ...@@ -731,8 +740,7 @@
FROM FROM
idx_biz_pv_health_index idx_biz_pv_health_index
WHERE WHERE
STATION IS NOT NULL ANALYSIS_OBJ_TYPE = '设备'
AND STATION != ''
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
GROUP BY GROUP BY
...@@ -752,8 +760,7 @@ ...@@ -752,8 +760,7 @@
FROM FROM
idx_biz_fan_health_index idx_biz_fan_health_index
WHERE WHERE
STATION IS NOT NULL ANALYSIS_OBJ_TYPE = '测点'
AND STATION != ''
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
GROUP BY GROUP BY
...@@ -765,8 +772,7 @@ ...@@ -765,8 +772,7 @@
FROM FROM
idx_biz_pv_health_index idx_biz_pv_health_index
WHERE WHERE
STATION IS NOT NULL ANALYSIS_OBJ_TYPE = '测点'
AND STATION != ''
AND ANALYSIS_TYPE = '按天' AND ANALYSIS_TYPE = '按天'
AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE AND DATE_FORMAT( REC_DATE, "%Y-%m-%d" ) = CURRENT_DATE
GROUP BY GROUP BY
......
...@@ -50,6 +50,7 @@ ...@@ -50,6 +50,7 @@
AND a.GATEWAY_ID = #{stationId} AND a.GATEWAY_ID = #{stationId}
</if> </if>
</where> </where>
order by recDate DESC
limit #{current}, #{size} limit #{current}, #{size}
</select> </select>
......
package com.yeejoin.amos.boot.module.jxiop.biz.listener; package com.yeejoin.amos.boot.module.jxiop.biz.listener;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.module.jxiop.api.dto.ProduceMsg;
import com.yeejoin.amos.boot.module.jxiop.api.entity.PersonAccount; import com.yeejoin.amos.boot.module.jxiop.api.entity.PersonAccount;
import com.yeejoin.amos.boot.module.jxiop.api.entity.PersonAccountFed; import com.yeejoin.amos.boot.module.jxiop.api.entity.PersonAccountFed;
import com.yeejoin.amos.boot.module.jxiop.api.mapper.PersonAccountFedMapper; import com.yeejoin.amos.boot.module.jxiop.api.mapper.PersonAccountFedMapper;
import com.yeejoin.amos.boot.module.jxiop.api.mapper.PersonAccountMapper; import com.yeejoin.amos.boot.module.jxiop.api.mapper.PersonAccountMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.activemq.QuerueProduce;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.activemq.command.ActiveMQTextMessage; import org.apache.activemq.command.ActiveMQTextMessage;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -14,6 +21,9 @@ import org.springframework.jms.annotation.JmsListener; ...@@ -14,6 +21,9 @@ import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.HashMap;
import java.util.Map;
import javax.jms.Message; import javax.jms.Message;
@Component @Component
...@@ -25,6 +35,8 @@ public class PlatformModifyPasswordistener { ...@@ -25,6 +35,8 @@ public class PlatformModifyPasswordistener {
PersonAccountFedMapper personAccountFedMapper; PersonAccountFedMapper personAccountFedMapper;
@Value("${amos.secret.key}") @Value("${amos.secret.key}")
private String secretKey; private String secretKey;
@Autowired
QuerueProduce querueProduce;
@JmsListener(destination = "${modifypasswordqueue}") @JmsListener(destination = "${modifypasswordqueue}")
public void reciveMesssage(Message message) { public void reciveMesssage(Message message) {
...@@ -45,6 +57,15 @@ public class PlatformModifyPasswordistener { ...@@ -45,6 +57,15 @@ public class PlatformModifyPasswordistener {
personAccountFed.setSecondaryPassword((String) jsonObject.get("rePassword")); personAccountFed.setSecondaryPassword((String) jsonObject.get("rePassword"));
personAccountFedMapper.updateById(personAccountFed); personAccountFedMapper.updateById(personAccountFed);
} }
//发消息通知集成方修改
if(personAccount!=null)
{
Map<String, Object> data=new HashMap<>();
data.put("SEQUENCE_NBR",jsonObject.get("sequenceNbr"));
ProduceMsg produceMsg= new ProduceMsg(data, "UPDATE",personAccount.getPuserId());
querueProduce.produceMsg(JSON.toJSONString(produceMsg));
}
message.acknowledge(); message.acknowledge();
log.info("--------------------消息消费成功 {}", jsonObject); log.info("--------------------消息消费成功 {}", jsonObject);
} catch (Exception e) { } catch (Exception e) {
......
...@@ -440,7 +440,13 @@ public class MonitorFanIdxController extends BaseController { ...@@ -440,7 +440,13 @@ public class MonitorFanIdxController extends BaseController {
return CommonResponseUtil.success(); return CommonResponseUtil.success();
} }
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
@ApiOperation(value = "统一获取集电线与风机状态")
@GetMapping("/fanLineList")
public void getFanLineList() {
getStatusJDX();
getListByFJ();
}
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY) @TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
@ApiOperation(value = "获取升压站信息 通过排序等") @ApiOperation(value = "获取升压站信息 通过排序等")
......
...@@ -226,7 +226,7 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator { ...@@ -226,7 +226,7 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
}); });
Collator instance = Collator.getInstance(Locale.CHINA); Collator instance = Collator.getInstance(Locale.CHINA);
if (needDisplayDisplayNameSystemType.contains(systemType) && needDisplayDisplayNameFrontModule.contains(frontModule)) { if (needDisplayDisplayNameSystemType.contains(systemType) && needDisplayDisplayNameFrontModule.contains(frontModule)) {
result.sort(Comparator.comparing(ESEquipments::getTraceId,Comparator.comparingInt(Integer::parseInt))); result.sort(Comparator.comparing(ESEquipments::getTraceId, Comparator.comparingInt(Integer::parseInt)));
} else { } else {
Collections.sort(result, (e1, e2) -> { Collections.sort(result, (e1, e2) -> {
return instance.compare(e1.getEquipmentIndexName(), e2.getEquipmentIndexName()); return instance.compare(e1.getEquipmentIndexName(), e2.getEquipmentIndexName());
...@@ -846,20 +846,17 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator { ...@@ -846,20 +846,17 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
for (ESEquipments listDatum : indicatorsDtoList) { for (ESEquipments listDatum : indicatorsDtoList) {
Map<String, Object> statusMap = new HashMap<>(); Map<String, Object> statusMap = new HashMap<>();
String data = listDatum.getDisplayName(); String data = listDatum.getDisplayName();
if (StringUtils.isEmpty(data)) { if (StringUtils.isEmpty(data)||(!ObjectUtils.isEmpty(listDatum.getEquipmentNumber())&&data.equals(listDatum.getEquipmentNumber()))) {
data = listDatum.getEquipmentIndexName(); data = listDatum.getEquipmentIndexName();
} else {
if (data.equals(listDatum.getEquipmentNumber())) {
data = listDatum.getEquipmentIndexName();
} else {
data = listDatum.getDisplayName();
} }
} statusMap.put("addres", listDatum.getAddress());
statusMap.put("addres",listDatum.getAddress());
statusMap.put("data", data); statusMap.put("data", data);
statusMap.put("state", listDatum.getValue().equals("false") ? 0 : 1); statusMap.put("state", listDatum.getValue().equals("false") ? 0 : 1);
statusMap.put("status", listDatum.getValue().equals("false") ? 0 : 1); statusMap.put("status", listDatum.getValue().equals("false") ? 0 : 1);
statusMap.put("title", listDatum.getValue().equals("false") ? "断" : "通"); statusMap.put("title", listDatum.getValue().equals("false") ? "断" : "通");
if (systemType.equals("网络")) {
statusMap.put("state", listDatum.getValue().equals("false") ? 1 : 0);
}
statusMaps.add(statusMap); statusMaps.add(statusMap);
} }
statusMaps.sort(Comparator.comparingLong(o -> Long.parseLong(o.get("addres").toString()))); statusMaps.sort(Comparator.comparingLong(o -> Long.parseLong(o.get("addres").toString())));
...@@ -894,7 +891,6 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator { ...@@ -894,7 +891,6 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
}); });
return statusMaps; return statusMaps;
} }
...@@ -963,11 +959,12 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator { ...@@ -963,11 +959,12 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
HashMap<String, String> fanstatutsHashMap = new HashMap<>(); HashMap<String, String> fanstatutsHashMap = new HashMap<>();
StationBasic stationBasic = stationBasicMapper.selectById(stationId); StationBasic stationBasic = stationBasicMapper.selectById(stationId);
Map<String, List<String>> queryCondtion = new HashMap<>(); Map<String, List<String>> queryCondtion = new HashMap<>();
queryCondtion.put(CommonConstans.QueryStringEquipmentIndexName, Arrays.asList("瞬时风速")); queryCondtion.put(CommonConstans.QueryStringEquipmentIndexName, Arrays.asList("瞬时风速", "有功功率"));
queryCondtion.put(CommonConstans.QueryStringGateWayId, Arrays.asList(gatewayId)); queryCondtion.put(CommonConstans.QueryStringGateWayId, Arrays.asList(gatewayId));
List<ESEquipments> listData = commonServiceImpl.getListDataByCondtions(queryCondtion, null, ESEquipments.class); List<ESEquipments> listDataAll = commonServiceImpl.getListDataByCondtions(queryCondtion, null, ESEquipments.class);
queryCondtion.put(CommonConstans.QueryStringEquipmentIndexName, Arrays.asList("有功功率")); Map<String, Object> listDataWindSpeed = listDataAll.stream().filter(esEquipments -> esEquipments.getEquipmentIndexName().equals("瞬时风速")).collect(Collectors.toMap(ESEquipments::getEquipmentNumber, ESEquipments::getValueF));
List<ESEquipments> listData1 = commonServiceImpl.getListDataByCondtions(queryCondtion, null, ESEquipments.class); // queryCondtion.put(CommonConstans.QueryStringEquipmentIndexName, Arrays.asList("有功功率"));
Map<String, Object> listDataActivePower = listDataAll.stream().filter(esEquipments -> esEquipments.getEquipmentIndexName().equals("有功功率")).collect(Collectors.toMap(ESEquipments::getEquipmentNumber, ESEquipments::getValueF));
TpriDmpDatabook tpriDmpDatabook = tpriDmpDatabookServiceImpl.getTpriDmpDatabookByDataName("风机"); TpriDmpDatabook tpriDmpDatabook = tpriDmpDatabookServiceImpl.getTpriDmpDatabookByDataName("风机");
List<Map<String, Object>> dataMaps = sjglZsjZsbtzServiceImpl.sjglZsjZsbtzMapper.getStationInfoMapByStationWerks(werks, tpriDmpDatabook.getDataid().toString()); List<Map<String, Object>> dataMaps = sjglZsjZsbtzServiceImpl.sjglZsjZsbtzMapper.getStationInfoMapByStationWerks(werks, tpriDmpDatabook.getDataid().toString());
//获取风机列表 //获取风机列表
...@@ -980,31 +977,29 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator { ...@@ -980,31 +977,29 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
for (Map<String, Object> dataMap : dataMaps) { for (Map<String, Object> dataMap : dataMaps) {
List<String> numList = Arrays.asList(dataMap.get("equipNum").toString().split(",")); List<String> numList = Arrays.asList(dataMap.get("equipNum").toString().split(","));
List<Map<String, Object>> statusMaps = new ArrayList<>(); List<Map<String, Object>> statusMaps = new ArrayList<>();
for (ESEquipments listDatum : listData) { // for (ESEquipments listDatum : listData) {
if (null == listDatum.getValueF()) { // if (null == listDatum.getValueF()) {
listDatum.setValueF(0F); // listDatum.setValueF(0F);
} // }
for (ESEquipments indicatorsDto : listData1) { // for (ESEquipments indicatorsDto : listData1) {
if (listDatum.getEquipmentNumber().equals(indicatorsDto.getEquipmentNumber())) { // if (listDatum.getEquipmentNumber().equals(indicatorsDto.getEquipmentNumber())) {
listDatum.setValueLabel(String.valueOf(indicatorsDto.getValueF() == null ? 0 : indicatorsDto.getValueF())); // listDatum.setValueLabel(String.valueOf(indicatorsDto.getValueF() == null ? 0 : indicatorsDto.getValueF()));
} // }
} // }
for (String num : numList) { for (String num : numList) {
if (Integer.parseInt(num) == Integer.parseInt(listDatum.getEquipmentNumber())) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("title", prefix + listDatum.getEquipmentNumber()); String equipmentNumber = String.format("%02d", Integer.parseInt(num));
map.put("title", prefix + equipmentNumber);
//用于参数传递 //用于参数传递
map.put("title1", listDatum.getEquipmentNumber()); map.put("title1", equipmentNumber);
map.put("windSpeed", listDatum.getValueF()); map.put("windSpeed", listDataWindSpeed.get(equipmentNumber));
map.put("power", listDatum.getValueLabel()); map.put("power", listDataActivePower.get(equipmentNumber));
//获取风机状态如果获取到的状态为空-则默认为正常运行状态 //获取风机状态如果获取到的状态为空-则默认为正常运行状态
String fantStatus = ObjectUtils.isEmpty(fanstatutsHashMap.get(listDatum.getEquipmentNumber())) ? "通讯中断" : fanstatutsHashMap.get(listDatum.getEquipmentNumber()); String fantStatus = ObjectUtils.isEmpty(fanstatutsHashMap.get(equipmentNumber)) ? "通讯中断" : fanstatutsHashMap.get(equipmentNumber);
map.put("url", fanStatusImagePathPrefix + File.separator + "风机-" + fantStatus + ".gif"); map.put("url", fanStatusImagePathPrefix + File.separator + "风机-" + fantStatus + ".gif");
statusMaps.add(map); statusMaps.add(map);
} }
}
}
IPage<Map<String, Object>> result = new Page<>(); IPage<Map<String, Object>> result = new Page<>();
result.setRecords(statusMaps); result.setRecords(statusMaps);
result.setCurrent(1); result.setCurrent(1);
...@@ -1310,10 +1305,11 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator { ...@@ -1310,10 +1305,11 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
resultMap.put("1svg", "1SVG"); resultMap.put("1svg", "1SVG");
resultMap.put("2svg", "2SVG"); resultMap.put("2svg", "2SVG");
resultMap.put("xzsvg", "夏造 SVG"); resultMap.put("xzsvg", "夏造SVG");
resultMap.put("xzaggavc", "夏造 AGGAVC"); resultMap.put("xzaggavc", "夏造AGCAVC");
resultMap.put("xzgyxh", "夏造 公用信号"); resultMap.put("xzgyxh", "夏造公用信号");
resultMap.put("xzjzlp", "夏造 交直流屏");
resultMap.put("xzjzlp", "夏造交直流屏");
//下方重复列表数据 //下方重复列表数据
List<Map<String, String>> boosterStationInfo = monitorFanIndicatorregionMapper.getMajorBoosterStationInfo(gatewayId, "ASC", 10); List<Map<String, String>> boosterStationInfo = monitorFanIndicatorregionMapper.getMajorBoosterStationInfo(gatewayId, "ASC", 10);
...@@ -1326,7 +1322,7 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator { ...@@ -1326,7 +1322,7 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
stringStringHashMap.put("value1", "0.0"); stringStringHashMap.put("value1", "0.0");
stringStringHashMap.put("value2", "0.0"); stringStringHashMap.put("value2", "0.0");
stringStringHashMap.put("value3", "0.0"); stringStringHashMap.put("value3", "0.0");
if(!map.get("boosterName").toString().equals("35kVⅠ母PT")){ if (!map.get("boosterName").toString().equals("35kVⅠ母PT")) {
listData.forEach(item -> { listData.forEach(item -> {
if (item.getDisplayName().equals("Ia")) { if (item.getDisplayName().equals("Ia")) {
...@@ -1339,7 +1335,7 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator { ...@@ -1339,7 +1335,7 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
stringStringHashMap.put("value3", item.getValueF() == null ? "0" : keepTwoDecimalPlaces(item.getValueF().toString())); stringStringHashMap.put("value3", item.getValueF() == null ? "0" : keepTwoDecimalPlaces(item.getValueF().toString()));
} }
}); });
}else{ } else {
stringStringHashMap.put("value1", ""); stringStringHashMap.put("value1", "");
stringStringHashMap.put("value2", ""); stringStringHashMap.put("value2", "");
stringStringHashMap.put("value3", ""); stringStringHashMap.put("value3", "");
...@@ -2150,7 +2146,7 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator { ...@@ -2150,7 +2146,7 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
likeMap.put(CommonConstans.QueryStringEquipmentIndexNameNotKeyword, "路电流"); likeMap.put(CommonConstans.QueryStringEquipmentIndexNameNotKeyword, "路电流");
//hlx=hlx.replace("#0", "#"); //hlx=hlx.replace("#0", "#");
//likeMap.put(CommonConstans.QueryStringEquipmentSpecificNameNotKeyword, hlx); //likeMap.put(CommonConstans.QueryStringEquipmentSpecificNameNotKeyword, hlx);
String nhlx =zz+"/"+nbq+"/"+ hlx.replace("#0", "#"); String nhlx = zz + "/" + nbq + "/" + hlx.replace("#0", "#");
List<ESEquipments> list = commonServiceImpl.getListDataByCondtionsAndLike(queryConditon, null, List<ESEquipments> list = commonServiceImpl.getListDataByCondtionsAndLike(queryConditon, null,
ESEquipments.class, likeMap); ESEquipments.class, likeMap);
...@@ -2162,7 +2158,7 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator { ...@@ -2162,7 +2158,7 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
// ESEquipments.class, likeMap1); // ESEquipments.class, likeMap1);
if (!ValidationUtil.isEmpty(list)) { if (!ValidationUtil.isEmpty(list)) {
list=list.stream().filter(i->i.getEquipmentSpecificName().contains(nhlx)).collect(Collectors.toList()); list = list.stream().filter(i -> i.getEquipmentSpecificName().contains(nhlx)).collect(Collectors.toList());
Double avageValue = 0.0; Double avageValue = 0.0;
avageValue = list.stream().filter(e -> !ObjectUtils.isEmpty(e.getValueF())) avageValue = list.stream().filter(e -> !ObjectUtils.isEmpty(e.getValueF()))
......
...@@ -4,9 +4,12 @@ import java.text.SimpleDateFormat; ...@@ -4,9 +4,12 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -17,8 +20,10 @@ import org.typroject.tyboot.core.rdbms.service.BaseService; ...@@ -17,8 +20,10 @@ import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jxiop.biz.dto.AlarmEventDto; import com.yeejoin.amos.boot.module.jxiop.biz.dto.AlarmEventDto;
import com.yeejoin.amos.boot.module.jxiop.biz.dto.ColModel; import com.yeejoin.amos.boot.module.jxiop.biz.dto.ColModel;
import com.yeejoin.amos.boot.module.jxiop.biz.dto.DataGridMock; import com.yeejoin.amos.boot.module.jxiop.biz.dto.DataGridMock;
...@@ -39,6 +44,21 @@ public class AlarmEventServiceImpl extends BaseService<AlarmEventDto, AlarmEvent ...@@ -39,6 +44,21 @@ public class AlarmEventServiceImpl extends BaseService<AlarmEventDto, AlarmEvent
@Autowired @Autowired
private EquipmentSpecificIndexMapper equipmentSpecificIndexMapper; private EquipmentSpecificIndexMapper equipmentSpecificIndexMapper;
@Autowired
private RedisUtils redisUtils;
@Autowired
private static Map<String, EquipmentSpecificIndex> map;
@PostConstruct
public void init() {
QueryWrapper<EquipmentSpecificIndex> wrapper = new QueryWrapper<>();
wrapper.eq("is_alarm", 1);
List<EquipmentSpecificIndex> list = equipmentSpecificIndexMapper.selectList(wrapper);
map = list.stream().collect(Collectors.toMap(EquipmentSpecificIndex::getEquipmentSpecificName,
Function.identity(), (key1, key2) -> key2));
}
@Async("jxiopAsyncExecutor") @Async("jxiopAsyncExecutor")
public void handleMessage(List<ConsumerRecord<String, String>> record) { public void handleMessage(List<ConsumerRecord<String, String>> record) {
List<AlarmEvent> alarmEvents = new ArrayList<>(); List<AlarmEvent> alarmEvents = new ArrayList<>();
...@@ -62,15 +82,20 @@ public class AlarmEventServiceImpl extends BaseService<AlarmEventDto, AlarmEvent ...@@ -62,15 +82,20 @@ public class AlarmEventServiceImpl extends BaseService<AlarmEventDto, AlarmEvent
} else { } else {
EquipAlarmEvent equipAlarmEvent = new EquipAlarmEvent(); EquipAlarmEvent equipAlarmEvent = new EquipAlarmEvent();
if (indexName.contains("实时故障") && objName.contains("风机")) { if (indexName.contains("实时故障") && objName.contains("风机")) {
LambdaQueryWrapper<EquipmentSpecificIndex> wrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<EquipmentSpecificIndex> wrapper = new
wrapper.eq(EquipmentSpecificIndex::getEquipmentSpecificName, objName); // LambdaQueryWrapper<>();
EquipmentSpecificIndex equipmentSpecificIndex = equipmentSpecificIndexMapper.selectOne(wrapper); // wrapper.eq(EquipmentSpecificIndex::getEquipmentSpecificName, objName);
// EquipmentSpecificIndex equipmentSpecificIndex =
// equipmentSpecificIndexMapper.selectOne(wrapper);
EquipmentSpecificIndex equipmentSpecificIndex = map.get(objName);
if (equipmentSpecificIndex == null) {
continue;
}
String valueEnum = equipmentSpecificIndex.getValueEnum(); String valueEnum = equipmentSpecificIndex.getValueEnum();
JSONArray arr = JSONObject.parseArray(valueEnum); JSONArray arr = JSONObject.parseArray(valueEnum);
for(Object o:arr) for (Object o : arr) {
{
JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(o)); JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(o));
if (json.containsKey("key")&&value.equals(json.get("key"))) { if (json.containsKey("key") && value.equals(json.get("key"))) {
String warn = json.getString("label"); String warn = json.getString("label");
if (warn.indexOf("备留") == -1) { if (warn.indexOf("备留") == -1) {
equipAlarmEvent.setEquipName(objName); equipAlarmEvent.setEquipName(objName);
...@@ -118,9 +143,9 @@ public class AlarmEventServiceImpl extends BaseService<AlarmEventDto, AlarmEvent ...@@ -118,9 +143,9 @@ public class AlarmEventServiceImpl extends BaseService<AlarmEventDto, AlarmEvent
i.setValue("分"); i.setValue("分");
} }
i.setStationName("升压站"); i.setStationName("升压站");
long mills = i.getCreatedTime()/1000000; long mills = i.getCreatedTime() / 1000000;
car.setTimeInMillis(mills); car.setTimeInMillis(mills);
//System.out.println(sdf.format(car.getTime())); // System.out.println(sdf.format(car.getTime()));
i.setTime(sdf.format(car.getTime())); i.setTime(sdf.format(car.getTime()));
}); });
PageInfo<EquipAlarmEvent> page = new PageInfo(alarmEventList); PageInfo<EquipAlarmEvent> page = new PageInfo(alarmEventList);
...@@ -131,8 +156,7 @@ public class AlarmEventServiceImpl extends BaseService<AlarmEventDto, AlarmEvent ...@@ -131,8 +156,7 @@ public class AlarmEventServiceImpl extends BaseService<AlarmEventDto, AlarmEvent
ColModel colModelEventDesc = new ColModel("eventDesc", "eventDesc", "事件描述", "事件描述", "dataGrid", "eventDesc"); ColModel colModelEventDesc = new ColModel("eventDesc", "eventDesc", "事件描述", "事件描述", "dataGrid", "eventDesc");
ColModel colModelAlarmGroupName = new ColModel("alarmGroupName", "alarmGroupName", "事件告警组", "事件告警组", "dataGrid", ColModel colModelAlarmGroupName = new ColModel("alarmGroupName", "alarmGroupName", "事件告警组", "事件告警组", "dataGrid",
"alarmGroupName"); "alarmGroupName");
ColModel colModelEventTime = new ColModel("time", "time", "事件发生时间", "事件发生时间", "dataGrid", ColModel colModelEventTime = new ColModel("time", "time", "事件发生时间", "事件发生时间", "dataGrid", "time");
"time");
ColModel colModelEventMovement = new ColModel("value", "value", "事件值", "事件值", "dataGrid", "value"); ColModel colModelEventMovement = new ColModel("value", "value", "事件值", "事件值", "dataGrid", "value");
List<ColModel> listColModel = Arrays.asList(colModelStationName, colModelEventDesc, colModelAlarmGroupName, List<ColModel> listColModel = Arrays.asList(colModelStationName, colModelEventDesc, colModelAlarmGroupName,
colModelEventTime, colModelEventMovement); colModelEventTime, colModelEventMovement);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment