在线监测功能

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 THEME="theme/";
/**
* 在线监测预告警单
*/
String ONLINE_REPORT="onlineReport/";
} }

View File

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

View File

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

View File

@@ -1,9 +1,12 @@
package com.njcn.harmonic.utils; 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.apache.poi.xwpf.usermodel.*;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.util.CollectionUtils;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; 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,14 +251,16 @@ public class WordUtil2 {
private static void insertTable(XWPFTable table, List<String[]> tableList) { private static void insertTable(XWPFTable table, List<String[]> tableList) {
//删除占位符行数 //删除占位符行数
table.removeRow(1); table.removeRow(1);
// 创建行,根据需要插入的数据添加新行,不处理表头 if (CollUtil.isNotEmpty(tableList)) {
for (int i = 0; i < tableList.size(); i++) { // 创建行,根据需要插入的数据添加新行,不处理表头
XWPFTableRow row = table.createRow(); for (int i = 0; i < tableList.size(); i++) {
List<XWPFTableCell> cells = row.getTableCells(); XWPFTableRow row = table.createRow();
for (int j = 0; j < cells.size(); j++) { List<XWPFTableCell> cells = row.getTableCells();
XWPFTableCell cell = cells.get(j); for (int j = 0; j < cells.size(); j++) {
String s = tableList.get(i)[j]; XWPFTableCell cell = cells.get(j);
cell.setText(s); String s = tableList.get(i)[j];
cell.setText(s);
}
} }
} }
} }
@@ -247,10 +288,8 @@ public class WordUtil2 {
for (XWPFTableRow row : rows) { for (XWPFTableRow row : rows) {
cells = row.getTableCells(); cells = row.getTableCells();
for (XWPFTableCell cell : cells) { for (XWPFTableCell cell : cells) {
paras = cell.getParagraphs(); List<XWPFParagraph> paragraphListTable = cell.getParagraphs();
for (XWPFParagraph para : paras) { processParagraphs(paragraphListTable, params, doc);
this.replaceInPara(para, params, doc);
}
} }
} }
} else { } else {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -14,7 +14,8 @@
B.Obj_Name objectName, B.Obj_Name objectName,
A.target_type targetType, A.target_type targetType,
A.over_limit_day overLimitDay, A.over_limit_day overLimitDay,
A.initiate_warning_flag dataResource A.initiate_warning_flag dataResource,
A.step step
from from
supervision_line_warning A supervision_line_warning A
left join pq_line p1 on A.line_id = p1.Id 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_by,
supervision_warning_leaflet.create_time, supervision_warning_leaflet.create_time,
supervision_warning_leaflet.update_by, 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 FROM supervision_warning_leaflet supervision_warning_leaflet
WHERE ${ew.sqlSegment} WHERE ${ew.sqlSegment}
</select> </select>

View File

@@ -40,6 +40,6 @@ public interface ILineWarningService extends IService<LineWarning> {
* @param param * @param param
* @return * @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 cn.hutool.core.date.DateUtil;
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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.common.pojo.enums.common.ServerEnum; 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.param.RStatLimitQueryParam;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; 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.mapper.device.LineWarningMapper;
import com.njcn.supervision.pojo.param.device.OnlineParam; import com.njcn.supervision.pojo.param.device.OnlineParam;
import com.njcn.supervision.pojo.po.device.LineWarning; 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.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData; import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.web.factory.PageFactory; import com.njcn.web.factory.PageFactory;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse; import java.io.InputStream;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalAdjusters;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
@@ -63,6 +71,8 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
private final IWarningLeafletService warningLeafletService; private final IWarningLeafletService warningLeafletService;
private final DeptLineFeignClient deptLineFeignClient; private final DeptLineFeignClient deptLineFeignClient;
private final LineFeignClient lineFeignClient; private final LineFeignClient lineFeignClient;
private final FileStorageUtil fileStorageUtil;
private final DeptFeignClient deptFeignClient;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@@ -98,25 +108,21 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
//4.发过告警单,则重新生成一条数据 //4.发过告警单,则重新生成一条数据
RStatLimitTargetDPO dpo = limitMap.get(item.getLineId()); 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.FXDL_ENUM.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);
} }
} }
this.saveBatch(addList); this.saveBatch(addList);
@@ -127,8 +133,8 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void addHeBeiNorthLineWarning() { public void addHeBeiNorthLineWarning() {
List<LineWarning> result = new ArrayList<>(); List<LineWarning> result = new ArrayList<>();
//获取指标集合(10个指标,包含总指标) //获取指标集合(8个指标,包含总指标)
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData(); List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.INDICATOR_TYPE.getCode()).getData();
Map<String, DictData> targetMap = dataList.stream().collect(Collectors.toMap(DictData::getCode, Function.identity())); Map<String, DictData> targetMap = dataList.stream().collect(Collectors.toMap(DictData::getCode, Function.identity()));
//获取监测点和部门表关系 //获取监测点和部门表关系
List<DeptLine> deptLines = deptLineFeignClient.getAllData().getData(); List<DeptLine> deptLines = deptLineFeignClient.getAllData().getData();
@@ -144,26 +150,22 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
limitTarget.forEach(item->{ limitTarget.forEach(item->{
String deptId = Objects.isNull(deptLineMap.get(item.getLineId()))?null:deptLineMap.get(item.getLineId()).get(0).getId(); 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 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));
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));
}); });
} }
//将装置无数据的统计入库 按运维要求,判断装置的最新数据不是当天,则认为装置无数据 //将装置无数据的统计入库 按运维要求,判断装置的最新数据不是当天,则认为装置无数据
@@ -197,16 +199,16 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
.collect(Collectors.toList()); .collect(Collectors.toList());
QueryWrapper<LineWarning> queryWrapper = new QueryWrapper<>(); QueryWrapper<LineWarning> queryWrapper = new QueryWrapper<>();
queryWrapper.between("A.alarm_time", param.getSearchBeginTime(),param.getSearchEndTime()); 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)){ if (Objects.equals(param.getDataType(),0)){
queryWrapper.eq("A.target_type", "0"); queryWrapper.eq("A.target_type", "0");
} }
//查询指标超标的监测点 //查询指标超标的监测点
else { else {
queryWrapper.ge("A.over_limit_day", param.getAlertThreshold()); queryWrapper.ge("A.over_limit_day", param.getAlarmThreshold());
if (CollUtil.isNotEmpty(lineList)) {
queryWrapper.in("A.line_id",lineList);
}
if (CollUtil.isNotEmpty(param.getTargetList())) { if (CollUtil.isNotEmpty(param.getTargetList())) {
queryWrapper.in("A.target_type", param.getTargetList()); queryWrapper.in("A.target_type", param.getTargetList());
} }
@@ -217,19 +219,89 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
@Override @Override
@Transactional(rollbackFor = Exception.class) @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(); String vCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.XBDY_ENUM.getCode()).getData().getId();
List<ReportLineInfoVo> list2 = getReportLineInfo(false,param.getIdList(),vCode,param.getSearchBeginTime(),param.getSearchEndTime(),null); List<ReportLineInfoVo> list2 = getReportLineInfo(false,param.getIdList(),vCode,param.getSearchBeginTime(),param.getSearchEndTime(),null,allLineWarnings);
//获取谐波电流超标监测点集合 //获取谐波电流超标监测点集合
String iCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.HARMONIC_CURRENT.getCode()).getData().getId(); String iCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.XBDL_ENUM.getCode()).getData().getId();
List<ReportLineInfoVo> list3 = getReportLineInfo(false,param.getIdList(),iCode,param.getSearchBeginTime(),param.getSearchEndTime(),null); 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<>(); List<ReportLineInfoVo> list = new ArrayList<>();
LambdaQueryWrapper<LineWarning> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<LineWarning> lambdaQueryWrapper = new LambdaQueryWrapper<>();
if (type) { if (type) {
@@ -243,6 +315,7 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
} }
List<LineWarning> warnings = this.baseMapper.selectList(lambdaQueryWrapper); List<LineWarning> warnings = this.baseMapper.selectList(lambdaQueryWrapper);
if (CollUtil.isNotEmpty(warnings)) { if (CollUtil.isNotEmpty(warnings)) {
allLineWarnings.addAll(warnings);
List<String> lineList = warnings.stream().map(LineWarning::getLineId).collect(Collectors.toList()); List<String> lineList = warnings.stream().map(LineWarning::getLineId).collect(Collectors.toList());
list = lineFeignClient.getReportLineInfo(lineList).getData(); list = lineFeignClient.getReportLineInfo(lineList).getData();
if (!type){ if (!type){
@@ -292,19 +365,19 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
int result = 0; int result = 0;
try { try {
//频率偏差 //频率偏差
if (Objects.equals(code,DicDataEnum.FREQUENCY_DEV.getCode())) { if (Objects.equals(code,DicDataEnum.PLPC_ENUM.getCode())) {
result = limitTarget.getFreqDevOvertime(); result = limitTarget.getFreqDevOvertime();
} }
//电压偏差 //电压偏差
else if (Objects.equals(code,DicDataEnum.VOLTAGE_DEV.getCode())) { else if (Objects.equals(code,DicDataEnum.DYPC_ENUM.getCode())) {
result = limitTarget.getVoltageDevOvertime(); result = limitTarget.getVoltageDevOvertime();
} }
//长时闪变 //长时闪变
else if (Objects.equals(code,DicDataEnum.FLICKER.getCode())) { else if (Objects.equals(code,DicDataEnum.CSSB_ENUM.getCode())) {
result = limitTarget.getFlickerOvertime(); result = limitTarget.getFlickerOvertime();
} }
//谐波电压 //谐波电压
else if (Objects.equals(code,DicDataEnum.HARMONIC_VOLTAGE.getCode())) { else if (Objects.equals(code,DicDataEnum.XBDY_ENUM.getCode())) {
int sum = 0; int sum = 0;
Class<?> clazz = limitTarget.getClass(); Class<?> clazz = limitTarget.getClass();
for (int i = 2; i <= 25; i++) { for (int i = 2; i <= 25; i++) {
@@ -316,7 +389,7 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
result = limitTarget.getUaberranceOvertime() + sum; 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; int sum = 0;
Class<?> clazz = limitTarget.getClass(); Class<?> clazz = limitTarget.getClass();
for (int i = 2; i <= 25; i++) { for (int i = 2; i <= 25; i++) {
@@ -328,7 +401,7 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
result = sum; result = sum;
} }
//间谐波电压 //间谐波电压
else if (Objects.equals(code,DicDataEnum.INTERHARMONIC_VOLTAGE.getCode())) { else if (Objects.equals(code,DicDataEnum.JXBDY_ENUM.getCode())) {
int sum = 0; int sum = 0;
Class<?> clazz = limitTarget.getClass(); Class<?> clazz = limitTarget.getClass();
for (int i = 1; i <= 16; i++) { for (int i = 1; i <= 16; i++) {
@@ -340,48 +413,13 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
result = sum; result = sum;
} }
//负序电压不平衡度 //负序电压不平衡度
else if (Objects.equals(code,DicDataEnum.PHASE_VOLTAGE.getCode())) { else if (Objects.equals(code,DicDataEnum.SXDYBPHD_ENUM.getCode())) {
result = limitTarget.getUbalanceOvertime(); result = limitTarget.getUbalanceOvertime();
} }
//负序电流 //负序电流
else if (Objects.equals(code,DicDataEnum.NEG_CURRENT.getCode())) { else if (Objects.equals(code,DicDataEnum.FXDL_ENUM.getCode())) {
result = limitTarget.getINegOvertime(); 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) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@@ -28,8 +28,9 @@ public interface IWarningLeafletService extends IBpmService<WarningLeaflet> {
* leaflet单子类型1预警单2告警单 * leaflet单子类型1预警单2告警单
* issueDetail问题详细描述 * issueDetail问题详细描述
* reformAdvice:整改意见 * 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); 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.bpm.pojo.param.instance.BpmProcessInstanceCancelParam;
import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.harmonic.pojo.dto.RMpPartHarmonicDetailDTO; import com.njcn.harmonic.pojo.dto.RMpPartHarmonicDetailDTO;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.supervision.enums.FlowStatusEnum; import com.njcn.supervision.enums.FlowStatusEnum;
import com.njcn.supervision.enums.LeafletTypeEnum; import com.njcn.supervision.enums.LeafletTypeEnum;
import com.njcn.supervision.enums.ProblemTypeEnum; import com.njcn.supervision.enums.ProblemTypeEnum;
@@ -78,11 +79,14 @@ public class WarningLeafletServiceImpl extends ServiceImpl<WarningLeafletMapper,
@Resource @Resource
private SupervisionGeneralSurveyPlanPOService supervisionGeneralSurveyPlanPOService; private SupervisionGeneralSurveyPlanPOService supervisionGeneralSurveyPlanPOService;
@Resource
private FileStorageUtil fileStorageUtil;
/** /**
* 不创建工作流,只是创建一个告警单,需要待用户反馈后才会进入流程 * 不创建工作流,只是创建一个告警单,需要待用户反馈后才会进入流程
*/ */
@Override @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 warningLeaflet = new WarningLeaflet();
warningLeaflet.setLeafletName(name); warningLeaflet.setLeafletName(name);
warningLeaflet.setDeptId(deptId); warningLeaflet.setDeptId(deptId);
@@ -95,7 +99,9 @@ public class WarningLeafletServiceImpl extends ServiceImpl<WarningLeafletMapper,
warningLeaflet.setReformAdvice(reformAdvice); warningLeaflet.setReformAdvice(reformAdvice);
warningLeaflet.setState(DataStateEnum.ENABLE.getCode()); warningLeaflet.setState(DataStateEnum.ENABLE.getCode());
warningLeaflet.setStatus(FlowStatusEnum.NO_FEEDBACK.getCode()); warningLeaflet.setStatus(FlowStatusEnum.NO_FEEDBACK.getCode());
warningLeaflet.setFilePath(filePath);
this.baseMapper.insert(warningLeaflet); this.baseMapper.insert(warningLeaflet);
return warningLeaflet.getId();
} }
@Override @Override
@@ -132,6 +138,9 @@ public class WarningLeafletServiceImpl extends ServiceImpl<WarningLeafletMapper,
if (deptMap.containsKey(x.getDutyOrgId())) { if (deptMap.containsKey(x.getDutyOrgId())) {
x.setDutyOrgName(deptMap.get(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.leaflet.IWarningLeafletService;
import com.njcn.supervision.service.problem.SupervisionUserComplaintPOService; import com.njcn.supervision.service.problem.SupervisionUserComplaintPOService;
import com.njcn.user.api.DeptFeignClient; import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.Dept; import com.njcn.user.pojo.po.Dept;
import com.njcn.web.factory.PageFactory; import com.njcn.web.factory.PageFactory;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -45,7 +44,6 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor @RequiredArgsConstructor
public class SupervisionUserComplaintPOServiceImpl extends ServiceImpl<SupervisionUserComplaintPOMapper, SupervisionUserComplaintPO> implements SupervisionUserComplaintPOService{ public class SupervisionUserComplaintPOServiceImpl extends ServiceImpl<SupervisionUserComplaintPOMapper, SupervisionUserComplaintPO> implements SupervisionUserComplaintPOService{
private final UserFeignClient userFeignClient;
private final IWarningLeafletService warningLeafletService; private final IWarningLeafletService warningLeafletService;
private final DeptFeignClient deptFeignClient; private final DeptFeignClient deptFeignClient;
@@ -117,7 +115,8 @@ public class SupervisionUserComplaintPOServiceImpl extends ServiceImpl<Supervisi
ProblemTypeEnum.USER.getCode(), ProblemTypeEnum.USER.getCode(),
LeafletTypeEnum.ALARM.getCode(), LeafletTypeEnum.ALARM.getCode(),
supervisionUserComplaintPO.getComplaintText(), supervisionUserComplaintPO.getComplaintText(),
warningAddParam.getReformAdvice() warningAddParam.getReformAdvice(),
null
); );
this.lambdaUpdate().eq(SupervisionUserComplaintPO::getId,warningAddParam.getId()).set(SupervisionUserComplaintPO::getInitiateWarningFlag,1).update(); 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(), ProblemTypeEnum.SITE_TEST.getCode(),
LeafletTypeEnum.ALARM.getCode(), LeafletTypeEnum.ALARM.getCode(),
surveyTestVO.getProblemDetail(), surveyTestVO.getProblemDetail(),
warningAddParam.getReformAdvice() warningAddParam.getReformAdvice(),
null
); );
//将当前的测试数据改为已告警 //将当前的测试数据改为已告警
this.lambdaUpdate().eq(SurveyTest::getId,warningAddParam.getId()).set(SurveyTest::getInitiateWarningFlag,1).update(); this.lambdaUpdate().eq(SurveyTest::getId,warningAddParam.getId()).set(SurveyTest::getInitiateWarningFlag,1).update();