在线监测功能

1.动态生成预告警单、下载预告警单
This commit is contained in:
xy
2024-06-25 17:36:50 +08:00
parent df72e7c338
commit 5c36e2e4f4
20 changed files with 236 additions and 108 deletions

View File

@@ -131,4 +131,9 @@ public interface OssPath {
*/
String THEME="theme/";
/**
* 在线监测预告警单
*/
String ONLINE_REPORT="onlineReport/";
}

View File

@@ -45,8 +45,8 @@ public class ReportLineInfoVo implements Serializable {
@ApiModelProperty("供电设备容量")
private Double devCapacity;
@ApiModelProperty("供电设备容量")
private Double standardCapacity;
@ApiModelProperty("协议容量")
private Double dealCapacity;
@ApiModelProperty("超标天数")
private Integer overDays;

View File

@@ -1701,7 +1701,7 @@
pd.IP ip,
pld.Short_Capacity shortCapacity,
pld.Dev_Capacity devCapacity,
pld.Standard_Capacity standardCapacity
pld.Deal_Capacity dealCapacity
from
pq_line pl
left join pq_line_detail pld on pl.Id = pld.Id

View File

@@ -1,9 +1,12 @@
package com.njcn.harmonic.utils;
import ch.qos.logback.core.rolling.helper.FileStoreUtil;
import cn.hutool.core.collection.CollUtil;
import org.apache.poi.xwpf.usermodel.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.CollectionUtils;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
@@ -51,6 +54,42 @@ public class WordUtil2 {
}
}
public InputStream getReportFile(String path, Map<String, Object> params, List<List<String[]>> tableList)
throws Exception {
path = ClearPathUtil.cleanString(path);
InputStream inStream = null,in = null;
CustomXWPFDocument doc = null;
//读取报告模板
try {
inStream = new ClassPathResource(path).getInputStream();;
doc = new CustomXWPFDocument(inStream);
this.replaceInTable(doc,params,tableList);
this.replaceInPara(doc, params);
} catch (IOException e) {
logger.error("获取报告模板异常,原因为:" + e);
} finally {
if (null != inStream) {
inStream.close();
}
}
try {
//临时缓冲区
ByteArrayOutputStream out = new ByteArrayOutputStream();
doc.write(out);
byte[] docByteAry = out.toByteArray();
in = new ByteArrayInputStream(docByteAry);
out.close();
} catch (Exception e) {
logger.error("输出稳态报告异常,原因为:" + e);
} finally {
if (doc != null) {
doc.close();
}
}
return in;
}
/**
* 替换段落里面的变量
*
@@ -212,6 +251,7 @@ public class WordUtil2 {
private static void insertTable(XWPFTable table, List<String[]> tableList) {
//删除占位符行数
table.removeRow(1);
if (CollUtil.isNotEmpty(tableList)) {
// 创建行,根据需要插入的数据添加新行,不处理表头
for (int i = 0; i < tableList.size(); i++) {
XWPFTableRow row = table.createRow();
@@ -223,6 +263,7 @@ public class WordUtil2 {
}
}
}
}
/**
* 替换表格里面的变量
@@ -247,10 +288,8 @@ public class WordUtil2 {
for (XWPFTableRow row : rows) {
cells = row.getTableCells();
for (XWPFTableCell cell : cells) {
paras = cell.getParagraphs();
for (XWPFParagraph para : paras) {
this.replaceInPara(para, params, doc);
}
List<XWPFParagraph> paragraphListTable = cell.getParagraphs();
processParagraphs(paragraphListTable, params, doc);
}
}
} else {

View File

@@ -59,6 +59,9 @@ public class OnlineParam extends BaseParam implements Serializable {
@ApiModelProperty(name = "issueDetail", value = "问题描述")
private String issueDetail;
@ApiModelProperty(name = "reformAdvice", value = "整改意见")
private String reformAdvice;
@ApiModelProperty(name = "year", value = "")
private String year;

View File

@@ -82,4 +82,8 @@ public class LineWarning extends BaseEntity implements Serializable {
*/
private Integer thresholdResource;
/**
* 预告警单id
*/
private String leafletId;
}

View File

@@ -93,5 +93,9 @@ public class WarningLeaflet extends BaseEntity implements Serializable{
*/
private Integer state;
/**
* 预告警单文件路径
*/
private String filePath;
}

View File

@@ -73,4 +73,7 @@ public class OnlineVo implements Serializable {
@ApiModelProperty("数据来源 0:系统默认 1:自定义")
private Integer dataResource;
@ApiModelProperty("当前流程(null:无流程 1:预警 2:告警)")
private Integer step;
}

View File

@@ -1,6 +1,7 @@
package com.njcn.supervision.pojo.vo.leaflet;
import com.njcn.db.bo.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@@ -116,4 +117,7 @@ public class WarningLeafletVO extends BaseEntity implements Serializable{
* 责任单位名称
*/
private String dutyOrgName;
@ApiModelProperty("预告警单下载路径")
private String filePath;
}

View File

@@ -58,11 +58,26 @@
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>common-oss</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<finalName>supervision-boot</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>docx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
@@ -70,6 +85,7 @@
<configuration>
<compilerArgument>-Xlint:unchecked</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>

View File

@@ -75,9 +75,9 @@ public class LineWarningController extends BaseController {
@PostMapping("/report")
@ApiOperation("发起预告警单")
@ApiImplicitParam(name = "param", value = "参数", required = true)
public HttpResult<String> startReport(@RequestBody @Validated OnlineParam.ReportParam param, HttpServletResponse response) {
public HttpResult<String> startReport(@RequestBody @Validated OnlineParam.ReportParam param) {
String methodDescribe = getMethodDescribe("startReport");
lineWarningService.startReport(param,response);
lineWarningService.startReport(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "success", methodDescribe);
}

View File

@@ -14,7 +14,8 @@
B.Obj_Name objectName,
A.target_type targetType,
A.over_limit_day overLimitDay,
A.initiate_warning_flag dataResource
A.initiate_warning_flag dataResource,
A.step step
from
supervision_line_warning A
left join pq_line p1 on A.line_id = p1.Id

View File

@@ -23,7 +23,8 @@
supervision_warning_leaflet.create_by,
supervision_warning_leaflet.create_time,
supervision_warning_leaflet.update_by,
supervision_warning_leaflet.update_time
supervision_warning_leaflet.update_time,
supervision_warning_leaflet.file_path
FROM supervision_warning_leaflet supervision_warning_leaflet
WHERE ${ew.sqlSegment}
</select>

View File

@@ -40,6 +40,6 @@ public interface ILineWarningService extends IService<LineWarning> {
* @param param
* @return
*/
void startReport(OnlineParam.ReportParam param, HttpServletResponse response);
void startReport(OnlineParam.ReportParam param);
}

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.common.pojo.enums.common.ServerEnum;
@@ -21,6 +22,10 @@ import com.njcn.harmonic.api.RStatLimitRateDClient;
import com.njcn.harmonic.pojo.param.RStatLimitQueryParam;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
import com.njcn.harmonic.utils.WordUtil2;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.supervision.enums.ProblemTypeEnum;
import com.njcn.supervision.mapper.device.LineWarningMapper;
import com.njcn.supervision.pojo.param.device.OnlineParam;
import com.njcn.supervision.pojo.po.device.LineWarning;
@@ -31,15 +36,18 @@ import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.web.factory.PageFactory;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
import java.util.function.Function;
@@ -63,6 +71,8 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
private final IWarningLeafletService warningLeafletService;
private final DeptLineFeignClient deptLineFeignClient;
private final LineFeignClient lineFeignClient;
private final FileStorageUtil fileStorageUtil;
private final DeptFeignClient deptFeignClient;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -98,25 +108,21 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
//4.发过告警单,则重新生成一条数据
RStatLimitTargetDPO dpo = limitMap.get(item.getLineId());
//频率偏差
targetInfo(lineWarnings,targetMap,DicDataEnum.FREQUENCY_DEV.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
targetInfo(lineWarnings,targetMap,DicDataEnum.PLPC_ENUM.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
//电压偏差
targetInfo(lineWarnings,targetMap,DicDataEnum.VOLTAGE_DEV.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
targetInfo(lineWarnings,targetMap,DicDataEnum.DYPC_ENUM.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
//长时闪变
targetInfo(lineWarnings,targetMap,DicDataEnum.FLICKER.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
targetInfo(lineWarnings,targetMap,DicDataEnum.CSSB_ENUM.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
//谐波电压
targetInfo(lineWarnings,targetMap,DicDataEnum.HARMONIC_VOLTAGE.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
targetInfo(lineWarnings,targetMap,DicDataEnum.XBDY_ENUM.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
//谐波电流
targetInfo(lineWarnings,targetMap,DicDataEnum.HARMONIC_CURRENT.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
targetInfo(lineWarnings,targetMap,DicDataEnum.XBDL_ENUM.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
//间谐波电压
targetInfo(lineWarnings,targetMap,DicDataEnum.INTERHARMONIC_VOLTAGE.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
targetInfo(lineWarnings,targetMap,DicDataEnum.JXBDY_ENUM.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
//负序电压不平衡度
targetInfo(lineWarnings,targetMap,DicDataEnum.phase_Voltage.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
targetInfo(lineWarnings,targetMap,DicDataEnum.SXDYBPHD_ENUM.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
//负序电流
targetInfo(lineWarnings,targetMap,DicDataEnum.NEG_CURRENT.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
//电压总谐波畸变率
targetInfo(lineWarnings,targetMap,DicDataEnum.THD_V.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
//总稳态指标
targetInfo(lineWarnings,targetMap,DicDataEnum.TOTAL_INDICATOR.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
targetInfo(lineWarnings,targetMap,DicDataEnum.FXDL_ENUM.getCode(),dpo,item.getLineId(),addList,updateList,deptId);
}
}
this.saveBatch(addList);
@@ -127,8 +133,8 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
@Transactional(rollbackFor = Exception.class)
public void addHeBeiNorthLineWarning() {
List<LineWarning> result = new ArrayList<>();
//获取指标集合(10个指标,包含总指标)
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
//获取指标集合(8个指标,包含总指标)
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.INDICATOR_TYPE.getCode()).getData();
Map<String, DictData> targetMap = dataList.stream().collect(Collectors.toMap(DictData::getCode, Function.identity()));
//获取监测点和部门表关系
List<DeptLine> deptLines = deptLineFeignClient.getAllData().getData();
@@ -144,26 +150,22 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
limitTarget.forEach(item->{
String deptId = Objects.isNull(deptLineMap.get(item.getLineId()))?null:deptLineMap.get(item.getLineId()).get(0).getId();
//频率偏差
LineWarning l1 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.FREQUENCY_DEV.getCode()).getId(),item.getFreqDevOvertime());
LineWarning l1 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.PLPC_ENUM.getCode()).getId(),item.getFreqDevOvertime());
//电压偏差
LineWarning l2 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.VOLTAGE_DEV.getCode()).getId(),item.getVoltageDevOvertime());
LineWarning l2 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.DYPC_ENUM.getCode()).getId(),item.getVoltageDevOvertime());
//长时闪变
LineWarning l3 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.FLICKER.getCode()).getId(),item.getFlickerOvertime());
LineWarning l3 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.CSSB_ENUM.getCode()).getId(),item.getFlickerOvertime());
//谐波电压
LineWarning l4 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId(),item.getUharmOvertime());
LineWarning l4 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.XBDY_ENUM.getCode()).getId(),item.getUharmOvertime());
//谐波电流
LineWarning l5 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId(),item.getIharmOvertime());
LineWarning l5 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.XBDL_ENUM.getCode()).getId(),item.getIharmOvertime());
//间谐波电压
LineWarning l6 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.INTERHARMONIC_VOLTAGE.getCode()).getId(),item.getInuharmOvertime());
LineWarning l6 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.JXBDY_ENUM.getCode()).getId(),item.getInuharmOvertime());
//负序电压不平衡度
LineWarning l7 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId(),item.getUbalanceOvertime());
LineWarning l7 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.SXDYBPHD_ENUM.getCode()).getId(),item.getUbalanceOvertime());
//负序电流
LineWarning l8 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId(),item.getINegOvertime());
//电压总谐波畸变率
LineWarning l9 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.THD_V.getCode()).getId(),item.getUaberranceOvertime());
//总稳态指标
LineWarning l10 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.TOTAL_INDICATOR.getCode()).getId(),item.getAllOvertime());
result.addAll(Arrays.asList(l1,l2,l3,l4,l5,l6,l7,l8,l9,l10));
LineWarning l8 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.FXDL_ENUM.getCode()).getId(),item.getINegOvertime());
result.addAll(Arrays.asList(l1,l2,l3,l4,l5,l6,l7,l8));
});
}
//将装置无数据的统计入库 按运维要求,判断装置的最新数据不是当天,则认为装置无数据
@@ -197,16 +199,16 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
.collect(Collectors.toList());
QueryWrapper<LineWarning> queryWrapper = new QueryWrapper<>();
queryWrapper.between("A.alarm_time", param.getSearchBeginTime(),param.getSearchEndTime());
if (CollUtil.isNotEmpty(lineList)) {
queryWrapper.in("A.line_id",lineList);
}
//查询无数据的监测点
if (Objects.equals(param.getDataType(),0)){
queryWrapper.eq("A.target_type", "0");
}
//查询指标超标的监测点
else {
queryWrapper.ge("A.over_limit_day", param.getAlertThreshold());
if (CollUtil.isNotEmpty(lineList)) {
queryWrapper.in("A.line_id",lineList);
}
queryWrapper.ge("A.over_limit_day", param.getAlarmThreshold());
if (CollUtil.isNotEmpty(param.getTargetList())) {
queryWrapper.in("A.target_type", param.getTargetList());
}
@@ -217,19 +219,89 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
@Override
@Transactional(rollbackFor = Exception.class)
public void startReport(OnlineParam.ReportParam param,HttpServletResponse response) {
public void startReport(OnlineParam.ReportParam param) {
List<LineWarning> allLineWarnings = new ArrayList<>();
//获取部门名称
String deptName = deptFeignClient.getDeptById(param.getDeptId()).getData().getName();
param.setDeptName(deptName);
WordUtil2 wordUtil2 = new WordUtil2();
String inputUrl = "file/warningReport.docx";
String fileName = "电能[告]"+param.getYear()+""+param.getNumber()+"号-"+param.getDeptName()+"地市 电能质量技术监督告警单.docx";
//获取无数据监测点集合
List<ReportLineInfoVo> list1 = getReportLineInfo(true,param.getIdList(),null,param.getSearchBeginTime(),param.getSearchEndTime(),param.getDeptId());
List<ReportLineInfoVo> list1 = getReportLineInfo(true,param.getIdList(),null,param.getSearchBeginTime(),param.getSearchEndTime(),param.getDeptId(),allLineWarnings);
//获取谐波电压超标监测点集合
String vCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getData().getId();
List<ReportLineInfoVo> list2 = getReportLineInfo(false,param.getIdList(),vCode,param.getSearchBeginTime(),param.getSearchEndTime(),null);
String vCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.XBDY_ENUM.getCode()).getData().getId();
List<ReportLineInfoVo> list2 = getReportLineInfo(false,param.getIdList(),vCode,param.getSearchBeginTime(),param.getSearchEndTime(),null,allLineWarnings);
//获取谐波电流超标监测点集合
String iCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.HARMONIC_CURRENT.getCode()).getData().getId();
List<ReportLineInfoVo> list3 = getReportLineInfo(false,param.getIdList(),iCode,param.getSearchBeginTime(),param.getSearchEndTime(),null);
String iCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.XBDL_ENUM.getCode()).getData().getId();
List<ReportLineInfoVo> list3 = getReportLineInfo(false,param.getIdList(),iCode,param.getSearchBeginTime(),param.getSearchEndTime(),null,allLineWarnings);
try {
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("${year}", param.getYear());
dataMap.put("${number}", param.getNumber());
dataMap.put("${deptName}", param.getDeptName());
dataMap.put("${startTime}", new SimpleDateFormat(DatePattern.CHINESE_DATE_PATTERN).format(new SimpleDateFormat(DatePattern.NORM_DATE_PATTERN).parse(param.getSearchBeginTime())));
dataMap.put("${endTime}", new SimpleDateFormat(DatePattern.CHINESE_DATE_PATTERN).format(new SimpleDateFormat(DatePattern.NORM_DATE_PATTERN).parse(param.getSearchEndTime())));
dataMap.put("${noData}", CollUtil.isEmpty(list1)?"0":String.valueOf(list1.size()));
dataMap.put("${harmonicV}", CollUtil.isEmpty(list2)?"0":String.valueOf(list2.size()));
dataMap.put("${harmonicI}", CollUtil.isEmpty(list3)?"0":String.valueOf(list3.size()));
dataMap.put("${alarmDay}", String.valueOf(param.getAlarmThreshold()));
List<String[]> dataList1 = new ArrayList<String[]>(),dataList2 = new ArrayList<String[]>(),dataList3 = new ArrayList<String[]>();
if (CollUtil.isNotEmpty(list1)) {
list1.forEach(item->{
dataList1.add(new String[]{deptName,item.getLineVoltage(),item.getLineName(),item.getSubName(),item.getObjName(),item.getSubVName(),item.getUpdateTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)),item.getIp()});
});
}
if (CollUtil.isNotEmpty(list2)) {
list2.forEach(item->{
dataList2.add(new String[]{deptName,item.getLineName(),item.getSubName(),item.getObjName(),String.valueOf(item.getOverDays())});
});
}
if (CollUtil.isNotEmpty(list3)) {
list3.forEach(item->{
dataList3.add(new String[]{deptName,item.getLineName(),item.getSubName(),item.getObjName(),String.valueOf(item.getOverDays()),String.valueOf(item.getShortCapacity()),String.valueOf(item.getDevCapacity()),String.valueOf(item.getDealCapacity())});
});
}
List<List<String[]>> tableList = Arrays.asList(dataList1,dataList2,dataList3);
InputStream inputStream = wordUtil2.getReportFile(inputUrl,dataMap,tableList);
//上传文件服务器
String path = fileStorageUtil.uploadStreamSpecifyName(inputStream, OssPath.ONLINE_REPORT, fileName);
//1.生成预告警单数据
String leafletId = warningLeafletService.createLeaflet(
ProblemTypeEnum.ONLINE.getName()
,param.getDeptId()
,IdWorker.get32UUID()
,null
,ProblemTypeEnum.ONLINE.getCode()
,param.getType()
,param.getIssueDetail()
,param.getReformAdvice()
,path);
//2.将选择的数据状态改成预警或者告警 && 将选择的数据添加预告警单id
if (CollUtil.isNotEmpty(allLineWarnings)) {
LambdaQueryWrapper<LineWarning> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(LineWarning::getId,param.getIdList())
.notIn(LineWarning::getTargetType,Arrays.asList(vCode,iCode))
.between(LineWarning::getAlarmTime,param.getSearchBeginTime(),param.getSearchEndTime());
allLineWarnings.addAll(this.baseMapper.selectList(lambdaQueryWrapper));
allLineWarnings.forEach(item->{
item.setStep(param.getType());
item.setInitiateWarningFlag(1);
if (!Objects.equals(item.getTargetType(),"0")) {
item.setAlertThreshold(param.getAlertThreshold());
item.setAlarmThreshold(param.getAlarmThreshold());
}
item.setLeafletId(leafletId);
});
this.updateBatchByMultiId(allLineWarnings);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public List<ReportLineInfoVo> getReportLineInfo(boolean type, List<String> idList, String codeId, String startTime, String endTime, String deptId) {
public List<ReportLineInfoVo> getReportLineInfo(boolean type, List<String> idList, String codeId, String startTime, String endTime, String deptId,List<LineWarning> allLineWarnings) {
List<ReportLineInfoVo> list = new ArrayList<>();
LambdaQueryWrapper<LineWarning> lambdaQueryWrapper = new LambdaQueryWrapper<>();
if (type) {
@@ -243,6 +315,7 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
}
List<LineWarning> warnings = this.baseMapper.selectList(lambdaQueryWrapper);
if (CollUtil.isNotEmpty(warnings)) {
allLineWarnings.addAll(warnings);
List<String> lineList = warnings.stream().map(LineWarning::getLineId).collect(Collectors.toList());
list = lineFeignClient.getReportLineInfo(lineList).getData();
if (!type){
@@ -292,19 +365,19 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
int result = 0;
try {
//频率偏差
if (Objects.equals(code,DicDataEnum.FREQUENCY_DEV.getCode())) {
if (Objects.equals(code,DicDataEnum.PLPC_ENUM.getCode())) {
result = limitTarget.getFreqDevOvertime();
}
//电压偏差
else if (Objects.equals(code,DicDataEnum.VOLTAGE_DEV.getCode())) {
else if (Objects.equals(code,DicDataEnum.DYPC_ENUM.getCode())) {
result = limitTarget.getVoltageDevOvertime();
}
//长时闪变
else if (Objects.equals(code,DicDataEnum.FLICKER.getCode())) {
else if (Objects.equals(code,DicDataEnum.CSSB_ENUM.getCode())) {
result = limitTarget.getFlickerOvertime();
}
//谐波电压
else if (Objects.equals(code,DicDataEnum.HARMONIC_VOLTAGE.getCode())) {
else if (Objects.equals(code,DicDataEnum.XBDY_ENUM.getCode())) {
int sum = 0;
Class<?> clazz = limitTarget.getClass();
for (int i = 2; i <= 25; i++) {
@@ -316,7 +389,7 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
result = limitTarget.getUaberranceOvertime() + sum;
}
//谐波电流
else if (Objects.equals(code,DicDataEnum.HARMONIC_CURRENT.getCode())) {
else if (Objects.equals(code,DicDataEnum.XBDL_ENUM.getCode())) {
int sum = 0;
Class<?> clazz = limitTarget.getClass();
for (int i = 2; i <= 25; i++) {
@@ -328,7 +401,7 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
result = sum;
}
//间谐波电压
else if (Objects.equals(code,DicDataEnum.INTERHARMONIC_VOLTAGE.getCode())) {
else if (Objects.equals(code,DicDataEnum.JXBDY_ENUM.getCode())) {
int sum = 0;
Class<?> clazz = limitTarget.getClass();
for (int i = 1; i <= 16; i++) {
@@ -340,48 +413,13 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
result = sum;
}
//负序电压不平衡度
else if (Objects.equals(code,DicDataEnum.PHASE_VOLTAGE.getCode())) {
else if (Objects.equals(code,DicDataEnum.SXDYBPHD_ENUM.getCode())) {
result = limitTarget.getUbalanceOvertime();
}
//负序电流
else if (Objects.equals(code,DicDataEnum.NEG_CURRENT.getCode())) {
else if (Objects.equals(code,DicDataEnum.FXDL_ENUM.getCode())) {
result = limitTarget.getINegOvertime();
}
//电压总谐波畸变率
else if (Objects.equals(code,DicDataEnum.THD_V.getCode())) {
result = limitTarget.getUaberranceOvertime();
}
//总稳态指标
else if (Objects.equals(code,DicDataEnum.TOTAL_INDICATOR.getCode())) {
int sum1 = 0,sum2 = 0,sum3 = 0;
Class<?> clazz = limitTarget.getClass();
for (int i = 2; i <= 25; i++) {
String methodName1 = "getUharm" + i + "Overtime";
Method method1 = clazz.getMethod(methodName1);
int value1 = (int) method1.invoke(limitTarget);
sum1 += value1;
String methodName2 = "getIharm" + i + "Overtime";
Method method2 = clazz.getMethod(methodName2);
int value2 = (int) method2.invoke(limitTarget);
sum2 += value2;
}
for (int i = 1; i <= 16; i++) {
String methodName = "getInuharm" + i + "Overtime";
Method method = clazz.getMethod(methodName);
int value = (int) method.invoke(limitTarget);
sum3 += value;
}
result = limitTarget.getFreqDevOvertime()
+ limitTarget.getVoltageDevOvertime()
+ limitTarget.getFlickerOvertime()
+ sum1
+ sum2
+ sum3
+ limitTarget.getUbalanceOvertime()
+ limitTarget.getINegOvertime()
+ limitTarget.getUaberranceOvertime();
}
} catch (Exception e) {
e.printStackTrace();
}

View File

@@ -28,8 +28,9 @@ public interface IWarningLeafletService extends IBpmService<WarningLeaflet> {
* leaflet单子类型1预警单2告警单
* issueDetail问题详细描述
* reformAdvice:整改意见
* filePath:预告警单文件路径
*/
void createLeaflet(String name, String deptId, String code, String id, Integer problemType, Integer leaflet, String issueDetail,String reformAdvice);
String createLeaflet(String name, String deptId, String code, String id, Integer problemType, Integer leaflet, String issueDetail,String reformAdvice,String filePath);
Page<WarningLeafletVO> alarmPageData(WarningLeafletParam.WarningLeafletQueryParam warningLeafletQueryParam);

View File

@@ -18,6 +18,7 @@ import com.njcn.bpm.pojo.dto.BpmProcessInstanceCreateReqDTO;
import com.njcn.bpm.pojo.param.instance.BpmProcessInstanceCancelParam;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.harmonic.pojo.dto.RMpPartHarmonicDetailDTO;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.supervision.enums.FlowStatusEnum;
import com.njcn.supervision.enums.LeafletTypeEnum;
import com.njcn.supervision.enums.ProblemTypeEnum;
@@ -78,11 +79,14 @@ public class WarningLeafletServiceImpl extends ServiceImpl<WarningLeafletMapper,
@Resource
private SupervisionGeneralSurveyPlanPOService supervisionGeneralSurveyPlanPOService;
@Resource
private FileStorageUtil fileStorageUtil;
/**
* 不创建工作流,只是创建一个告警单,需要待用户反馈后才会进入流程
*/
@Override
public void createLeaflet(String name, String deptId, String code, String id, Integer problemType, Integer leaflet, String issueDetail,String reformAdvice) {
public String createLeaflet(String name, String deptId, String code, String id, Integer problemType, Integer leaflet, String issueDetail,String reformAdvice,String filePath) {
WarningLeaflet warningLeaflet = new WarningLeaflet();
warningLeaflet.setLeafletName(name);
warningLeaflet.setDeptId(deptId);
@@ -95,7 +99,9 @@ public class WarningLeafletServiceImpl extends ServiceImpl<WarningLeafletMapper,
warningLeaflet.setReformAdvice(reformAdvice);
warningLeaflet.setState(DataStateEnum.ENABLE.getCode());
warningLeaflet.setStatus(FlowStatusEnum.NO_FEEDBACK.getCode());
warningLeaflet.setFilePath(filePath);
this.baseMapper.insert(warningLeaflet);
return warningLeaflet.getId();
}
@Override
@@ -132,6 +138,9 @@ public class WarningLeafletServiceImpl extends ServiceImpl<WarningLeafletMapper,
if (deptMap.containsKey(x.getDutyOrgId())) {
x.setDutyOrgName(deptMap.get(x.getDutyOrgId()));
}
if (!Objects.isNull(x.getFilePath())){
x.setFilePath(fileStorageUtil.getFileUrl(x.getFilePath()));
}
});
}
}

View File

@@ -21,7 +21,6 @@ import com.njcn.supervision.pojo.vo.problem.SupervisionUserComplaintVO;
import com.njcn.supervision.service.leaflet.IWarningLeafletService;
import com.njcn.supervision.service.problem.SupervisionUserComplaintPOService;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.Dept;
import com.njcn.web.factory.PageFactory;
import lombok.RequiredArgsConstructor;
@@ -45,7 +44,6 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class SupervisionUserComplaintPOServiceImpl extends ServiceImpl<SupervisionUserComplaintPOMapper, SupervisionUserComplaintPO> implements SupervisionUserComplaintPOService{
private final UserFeignClient userFeignClient;
private final IWarningLeafletService warningLeafletService;
private final DeptFeignClient deptFeignClient;
@@ -117,7 +115,8 @@ public class SupervisionUserComplaintPOServiceImpl extends ServiceImpl<Supervisi
ProblemTypeEnum.USER.getCode(),
LeafletTypeEnum.ALARM.getCode(),
supervisionUserComplaintPO.getComplaintText(),
warningAddParam.getReformAdvice()
warningAddParam.getReformAdvice(),
null
);
this.lambdaUpdate().eq(SupervisionUserComplaintPO::getId,warningAddParam.getId()).set(SupervisionUserComplaintPO::getInitiateWarningFlag,1).update();
}

View File

@@ -360,7 +360,8 @@ public class SurveyTestServiceImpl extends ServiceImpl<SurveyTestMapper, SurveyT
ProblemTypeEnum.SITE_TEST.getCode(),
LeafletTypeEnum.ALARM.getCode(),
surveyTestVO.getProblemDetail(),
warningAddParam.getReformAdvice()
warningAddParam.getReformAdvice(),
null
);
//将当前的测试数据改为已告警
this.lambdaUpdate().eq(SurveyTest::getId,warningAddParam.getId()).set(SurveyTest::getInitiateWarningFlag,1).update();