1.自定义报表,模板选择修改

2.自定义报告调度,更具部门绑定来选择监测点
3.技术监督附件代码更新
This commit is contained in:
wr
2023-09-14 19:14:08 +08:00
parent b701132711
commit 3aa0dc8eeb
24 changed files with 235 additions and 205 deletions

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.SysDeptTemp;
import com.njcn.harmonic.pojo.vo.SysDeptTempVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: 自定义报告模板和部门关系
* @Author: wr
* @Date: 2023/9/14 14:02
*/
public interface DeptTempMapper extends BaseMapper<SysDeptTemp> {
}

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.harmonic.mapper.DeptTempMapper">
</mapper>

View File

@@ -20,12 +20,14 @@ import com.njcn.harmonic.enums.HarmonicResponseEnum;
import com.njcn.harmonic.pojo.dto.ReportTemplateDTO;
import com.njcn.harmonic.pojo.po.ExcelRpt;
import com.njcn.harmonic.pojo.po.ExcelRptTemp;
import com.njcn.harmonic.pojo.po.SysDeptTemp;
import com.njcn.influxdb.param.InfluxDBSqlConstant;
import com.njcn.influxdb.param.InfluxDBTableConstant;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.mapper.mysql.line.DeptTempMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.ExcelRptMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.ExcelRptTempMapper;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
@@ -56,45 +58,51 @@ import java.util.stream.Collectors;
public class ReportServiceImpl implements ReportService {
private final DeptLineFeignClient deptLineFeignClient;
private final InfluxDbUtils influxDbUtils;
private final ExcelRptTempMapper excelRptTempMapper;
private final ExcelRptMapper excelRptMapper;
private final DeptTempMapper deptTempMapper;
private final FileStorageUtil fileStorageUtil;
private final DeviceUnitClient deviceUnitClient;
private final DicDataFeignClient dicDataFeignClient;
@Override
@Async("asyncExecutor")
public boolean batchReport(LineParam reportParam) {
public void batchReport(LineParam reportParam) {
//查询所有已激活模板
List<ExcelRptTemp> reportTemplateList = excelRptTempMapper.getActiveTempList();
if (CollUtil.isEmpty(reportTemplateList)) {
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE);
}
//有监测点,匹配监测点的数据进行处理
//无监测点,查询稳态所有监测点
List<String> list = reportParam.getLineIds();
if (CollUtil.isEmpty(list)) {
list = new ArrayList<>();
Map<String, List<String>> map = deptLineFeignClient.getLineByDeptRelation(AlgorithmParam.STEADY_STATE).getData();
Collection<List<String>> values = map.values();
for (List<String> value : values) {
list.addAll(value);
}
}
Map<String, List<String>> map = deptLineFeignClient.getLineByDeptRelation(AlgorithmParam.STEADY_STATE).getData();
//根据content进行处理
List<ReportTemplateDTO> dataList;
JSONArray jsonArray;
for (ExcelRptTemp excelRptTemp : reportTemplateList) {
//获取已绑定的部门信息
List<SysDeptTemp> sysDeptTemps = deptTempMapper.selectList(new LambdaQueryWrapper<SysDeptTemp>()
.eq(SysDeptTemp::getTempId, excelRptTemp.getId())
.eq(SysDeptTemp::getActivation, 1)
);
List<String> list = new ArrayList<>();
if (CollUtil.isNotEmpty(sysDeptTemps)) {
//筛选部门下面所包含的监测点
for (SysDeptTemp sysDeptTemp : sysDeptTemps) {
if (map.containsKey(sysDeptTemp.getDeptId())) {
list.addAll(map.get(sysDeptTemp.getDeptId()));
}
}
}
if (CollUtil.isEmpty(list)) {
continue;
}
try (InputStream fileStream = fileStorageUtil.getFileStream(excelRptTemp.getContent())) {
//获取content解析数据
jsonArray = new JSONArray(new JSONTokener(fileStream, new JSONConfig()));
@@ -133,7 +141,7 @@ public class ReportServiceImpl implements ReportService {
//根据数据填充content
if (CollUtil.isNotEmpty(endList)) {
contentChange(jsonArray, endList,lineId);
contentChange(jsonArray, endList, lineId);
}
//存入报表库
@@ -150,8 +158,6 @@ public class ReportServiceImpl implements ReportService {
}
}
}
return true;
}
/**
@@ -162,7 +168,10 @@ public class ReportServiceImpl implements ReportService {
*/
private void rptBiz(LineParam reportParam, String lineId, ExcelRptTemp excelRptTemp, String afterContent) {
LambdaQueryWrapper<ExcelRpt> lambdaQuery = new LambdaQueryWrapper<>();
lambdaQuery.eq(ExcelRpt::getLineId, lineId).eq(ExcelRpt::getTempId, excelRptTemp.getId()).eq(ExcelRpt::getType, reportParam.getType()).eq(ExcelRpt::getDataDate, reportParam.getDataDate());
lambdaQuery.eq(ExcelRpt::getLineId, lineId)
.eq(ExcelRpt::getTempId, excelRptTemp.getId())
.eq(ExcelRpt::getType, reportParam.getType())
.eq(ExcelRpt::getDataDate, reportParam.getDataDate());
ExcelRpt excelRpt = excelRptMapper.selectOne(lambdaQuery);
if (excelRpt != null) {
excelRpt.setContent(afterContent);
@@ -198,7 +207,7 @@ public class ReportServiceImpl implements ReportService {
* @param jsonArray 参数
* @return 结果
*/
private void contentChange(JSONArray jsonArray, List<ReportTemplateDTO> endList,String lineID) {
private void contentChange(JSONArray jsonArray, List<ReportTemplateDTO> endList, String lineID) {
//数据单位信息
Map<String, String> unit = unitMap(lineID);
//进行反向赋值到模板
@@ -227,9 +236,9 @@ public class ReportServiceImpl implements ReportService {
//解决数据单位问题 @指标#类型@
if (v.charAt(0) == '@' && v.contains("#")) {
String replace = v.replace("@", "");
if(unit.containsKey(replace)){
if (unit.containsKey(replace)) {
son.set("v", unit.get(replace));
}else{
} else {
son.set("v", "/");
}
@@ -292,59 +301,61 @@ public class ReportServiceImpl implements ReportService {
/**
* 数据单位信息
*
* @param lineID
* @return
*/
private Map<String,String> unitMap(String lineID){
private Map<String, String> unitMap(String lineID) {
PqsDeviceUnit deviceUnit = deviceUnitClient.lineUnitDetail(lineID).getData();
Map<String,String> unit=new HashMap<>();
Map<String, String> unit = new HashMap<>();
List<DictData> dictData = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEVICE_UNIT.getCode()).getData();
List<String> list = dictData.stream().map(DictData::getCode).collect(Collectors.toList());
for (String s : list) {
//有效值
if(s.equals(DicDataEnum.EFFECTIVE.getCode())){
unit.put(s+"#i",deviceUnit.getIeffective());
unit.put(s+"#v",deviceUnit.getLineVoltage());
if (s.equals(DicDataEnum.EFFECTIVE.getCode())) {
unit.put(s + "#i", deviceUnit.getIeffective());
unit.put(s + "#v", deviceUnit.getLineVoltage());
}
//功率
if(s.equals(DicDataEnum.POWER.getCode())){
unit.put(s+"#p",deviceUnit.getTotalActiveP());
unit.put(s+"#q",deviceUnit.getTotalNoP());
unit.put(s+"#s",deviceUnit.getTotalViewP());
if (s.equals(DicDataEnum.POWER.getCode())) {
unit.put(s + "#p", deviceUnit.getTotalActiveP());
unit.put(s + "#q", deviceUnit.getTotalNoP());
unit.put(s + "#s", deviceUnit.getTotalViewP());
}
//畸变率
if(s.equals(DicDataEnum.DISTORTION.getCode())){
unit.put(s+"#v",deviceUnit.getVdistortion());
if (s.equals(DicDataEnum.DISTORTION.getCode())) {
unit.put(s + "#v", deviceUnit.getVdistortion());
}
//电压偏差
if(s.equals(DicDataEnum.VOLTAGE.getCode())){
unit.put(s+"#v",deviceUnit.getVoltageDev());
if (s.equals(DicDataEnum.VOLTAGE.getCode())) {
unit.put(s + "#v", deviceUnit.getVoltageDev());
}
//频率
if(s.equals(DicDataEnum.UNIT_FREQUENCY.getCode())){
unit.put(s+"#freq",deviceUnit.getUnitFrequency());
unit.put(s+"#freqDev",deviceUnit.getUnitFrequencyDev());
if (s.equals(DicDataEnum.UNIT_FREQUENCY.getCode())) {
unit.put(s + "#freq", deviceUnit.getUnitFrequency());
unit.put(s + "#freqDev", deviceUnit.getUnitFrequencyDev());
}
//三项不平衡度
if(s.equals(DicDataEnum.UNBALANCE.getCode())){
unit.put(s+"#v","%");
unit.put(s+"#vPos",deviceUnit.getPositiveV());
unit.put(s+"#vNeg",deviceUnit.getNoPositiveV());
unit.put(s+"#vZero",deviceUnit.getNoPositiveV());
unit.put(s+"#i","%");
unit.put(s+"#iPos","A");
unit.put(s+"#iNeg","A");
unit.put(s+"#iZero","A");
if (s.equals(DicDataEnum.UNBALANCE.getCode())) {
unit.put(s + "#v", "%");
unit.put(s + "#vPos", deviceUnit.getPositiveV());
unit.put(s + "#vNeg", deviceUnit.getNoPositiveV());
unit.put(s + "#vZero", deviceUnit.getNoPositiveV());
unit.put(s + "#i", "%");
unit.put(s + "#iPos", "A");
unit.put(s + "#iNeg", "A");
unit.put(s + "#iZero", "A");
}
//基波
if(s.equals(DicDataEnum.FUND.getCode())){
unit.put(s+"#i",deviceUnit.getIfund());
unit.put(s+"#v",deviceUnit.getVfundEffective());
if (s.equals(DicDataEnum.FUND.getCode())) {
unit.put(s + "#i", deviceUnit.getIfund());
unit.put(s + "#v", deviceUnit.getVfundEffective());
}
}
return unit;
}
/**
* 组装influxDB查询sql查询value并封装endlist
*

View File

@@ -13,5 +13,5 @@ public interface ReportService {
* @param reportParam 参数
* @return 返回值
*/
boolean batchReport(LineParam reportParam);
void batchReport(LineParam reportParam);
}