@@ -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 = r eportParam . 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 = d eptLineFeignClient . 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
*