1.暂降次数微调

2.报表接口调整
This commit is contained in:
2024-11-26 09:15:15 +08:00
parent 92ffdb1931
commit 35f1b21474
5 changed files with 947 additions and 865 deletions

View File

@@ -39,7 +39,7 @@ public class MonitorSendController extends BaseController {
@ApiOperation("国网上送接口") @ApiOperation("国网上送接口")
@ApiImplicitParam(name = "param",value = "请求体",required = true) @ApiImplicitParam(name = "param",value = "请求体",required = true)
public HttpResult<String> windSend(@RequestBody @Validated MonitorParam.Info param){ public HttpResult<String> windSend(@RequestBody @Validated MonitorParam.Info param){
String methodDescribe = getMethodDescribe("sendType"); String methodDescribe = getMethodDescribe("windSend");
String s = monitorSendService.sendType(param); String s = monitorSendService.sendType(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
} }

View File

@@ -1334,6 +1334,12 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
for (OracleTerminalExcel oracleTerminalExcel : oracleTerminalExcelList) { for (OracleTerminalExcel oracleTerminalExcel : oracleTerminalExcelList) {
//单位 //单位
if(oracleTerminalExcel.getGdName().equals("省检修")){
oracleTerminalExcel.setGdName("国网河北超高压公司本部");
}else {
oracleTerminalExcel.setGdName("国网"+oracleTerminalExcel.getGdName()+"本部");
}
if (!mapDept.containsKey(oracleTerminalExcel.getGdName())) { if (!mapDept.containsKey(oracleTerminalExcel.getGdName())) {
oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, "单位名称不存在,请确认单位名称是否正确")); oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, "单位名称不存在,请确认单位名称是否正确"));
continue; continue;
@@ -1524,35 +1530,38 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
LambdaQueryWrapper<Monitor> monitorLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Monitor> monitorLambdaQueryWrapper = new LambdaQueryWrapper<>();
monitorLambdaQueryWrapper.eq(Monitor::getLineId, lineId) monitorLambdaQueryWrapper.eq(Monitor::getLineId, lineId)
.eq(Monitor::getName, oracleTerminalExcel.getLineName()); .eq(Monitor::getName, oracleTerminalExcel.getLineName());
Monitor monitor = monitorMapper.selectOne(monitorLambdaQueryWrapper); List<Monitor> monitorList = monitorMapper.selectList(monitorLambdaQueryWrapper);
if(CollUtil.isNotEmpty(monitorList)) {
for (Monitor monitor : monitorList) {
//当前电站下面没有监测点,可以新增 //当前电站下面没有监测点,可以新增
Monitor monitorPO = new Monitor(); Monitor monitorPO = new Monitor();
String monitorId = "04"; String monitorId = "04";
String one =""; String one = "";
if(deptDTO.getName().contains("石家庄")){ if (deptDTO.getName().contains("石家庄")) {
one= "01"; one = "01";
}else if(deptDTO.getName().contains("邯郸")){ } else if (deptDTO.getName().contains("邯郸")) {
one= "02"; one = "02";
}else if(deptDTO.getName().contains("保定")){ } else if (deptDTO.getName().contains("保定")) {
one= "03"; one = "03";
}else if(deptDTO.getName().contains("沧州")){ } else if (deptDTO.getName().contains("沧州")) {
one= "04"; one = "04";
}else if(deptDTO.getName().contains("邢台")){ } else if (deptDTO.getName().contains("邢台")) {
one= "05"; one = "05";
}else if(deptDTO.getName().contains("衡水")){ } else if (deptDTO.getName().contains("衡水")) {
one= "06"; one = "06";
}else if(deptDTO.getName().contains("超高压")){ } else if (deptDTO.getName().contains("超高压")) {
one= "07"; one = "07";
}else { } else {
one= "3.14159"; one = "3.14159";
} }
String last = String.format("M%05d",oracleTerminalExcel.getId()); String last = String.format("M%05d", oracleTerminalExcel.getId());
monitorPO.setMonitorId(monitorId+one+last); monitorPO.setMonitorId(monitorId + one + last);
monitorPO.setName(oracleTerminalExcel.getLineName()); monitorPO.setName(oracleTerminalExcel.getLineName());
@@ -1611,33 +1620,59 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
monitorPO.setMonitorObjectName(oracleTerminalExcel.getObjName()); monitorPO.setMonitorObjectName(oracleTerminalExcel.getObjName());
if (oracleTerminalExcel.getLoadType().equals("电加热负荷") ||oracleTerminalExcel.getLoadType().equals("轧机") || oracleTerminalExcel.getLoadType().equals("其他非线性负荷")) {
if(oracleTerminalExcel.getLoadType().equals("电加热负荷") || oracleTerminalExcel.getLoadType().equals("商业/市政/民用/电子通讯负荷") ||oracleTerminalExcel.getLoadType().equals("其他非线性负荷")){ if (objTypeDicMap.containsKey("冶炼负荷")) {
if (objTypeDicMap.containsKey(oracleTerminalExcel.getLoadType())) {
String objTypeId = objTypeDicMap.get("冶炼负荷").getId(); String objTypeId = objTypeDicMap.get("冶炼负荷").getId();
monitorPO.setMonitorTag(objTypeId); monitorPO.setMonitorTag(objTypeId);
}else { } else {
oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, "字典监测标签不存在,请确认后重试")); oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, "冶炼负荷字典监测标签不存在,请确认后重试"));
continue; continue;
} }
}else if(oracleTerminalExcel.getLoadType().equals("半导体制造") ||oracleTerminalExcel.getLoadType().equals("精密加工")){ } else if (oracleTerminalExcel.getLoadType().equals("商业/市政/民用/电子通讯负荷")) {
if (objTypeDicMap.containsKey(oracleTerminalExcel.getLoadType())) { if (objTypeDicMap.containsKey("城市商业")) {
String objTypeId = objTypeDicMap.get("重要或敏感用户").getId(); String objTypeId = objTypeDicMap.get("城市商业").getId();
monitorPO.setMonitorTag(objTypeId); monitorPO.setMonitorTag(objTypeId);
}else { } else {
oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, "字典监测标签不存在,请确认后重试")); oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, "城市商业字典监测标签不存在,请确认后重试"));
continue; continue;
} }
}else if(oracleTerminalExcel.getLoadType().equals("二类变电站") ||oracleTerminalExcel.getLoadType().equals("三类变电站") ||oracleTerminalExcel.getLoadType().equals("四类变电站")){ } else if (oracleTerminalExcel.getLoadType().equals("半导体制造") || oracleTerminalExcel.getLoadType().equals("精密加工")) {
if (objTypeDicMap.containsKey(oracleTerminalExcel.getLoadType())) { if (objTypeDicMap.containsKey("敏感用户")) {
String objTypeId = objTypeDicMap.get("主变低压侧").getId(); String objTypeId = objTypeDicMap.get("敏感用户").getId();
monitorPO.setMonitorTag(objTypeId); monitorPO.setMonitorTag(objTypeId);
}else { } else {
oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, "敏感用户字典监测标签不存在,请确认后重试"));
continue;
}
} else if (oracleTerminalExcel.getLoadType().equals("二类变电站") || oracleTerminalExcel.getLoadType().equals("三类变电站") || oracleTerminalExcel.getLoadType().equals("四类变电站")) {
if (objTypeDicMap.containsKey("主变高压侧")) {
String objTypeId = objTypeDicMap.get("主变高压侧").getId();
monitorPO.setMonitorTag(objTypeId);
} else {
oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, "字典监测标签不存在,请确认后重试")); oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, "字典监测标签不存在,请确认后重试"));
continue; continue;
} }
}else { }else if(oracleTerminalExcel.getLoadType().equals("跨省计量关口")){
if (objTypeDicMap.containsKey("跨省联络线")) {
String objTypeId = objTypeDicMap.get("跨省联络线").getId();
monitorPO.setMonitorTag(objTypeId);
} else {
oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, "跨省联络线字典监测标签不存在,请确认后重试"));
continue;
}
}else if(oracleTerminalExcel.getLoadType().equals("光伏电站")){
if (objTypeDicMap.containsKey("光伏电站")) {
String objTypeId = objTypeDicMap.get("光伏电站").getId();
monitorPO.setMonitorTag(objTypeId);
} else {
oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, "光伏电站字典监测标签不存在,请确认后重试"));
continue;
}
} else {
if (objTypeDicMap.containsKey(oracleTerminalExcel.getLoadType())) { if (objTypeDicMap.containsKey(oracleTerminalExcel.getLoadType())) {
String objTypeId = objTypeDicMap.get(oracleTerminalExcel.getLoadType()).getId(); String objTypeId = objTypeDicMap.get(oracleTerminalExcel.getLoadType()).getId();
monitorPO.setMonitorTag(objTypeId); monitorPO.setMonitorTag(objTypeId);
@@ -1653,8 +1688,11 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
if (objTypeMap.containsKey(oracleTerminalExcel.getLoadType())) { if (objTypeMap.containsKey(oracleTerminalExcel.getLoadType())) {
String objTypeId = objTypeMap.get(oracleTerminalExcel.getLoadType()).getId(); String objTypeId = objTypeMap.get(oracleTerminalExcel.getLoadType()).getId();
monitorPO.setObjType(objTypeId); monitorPO.setObjType(objTypeId);
}else if(oracleTerminalExcel.getLoadType().equals("电加热负荷")){
String objTypeId = objTypeMap.get("电加热负荷(含电弧炉、中频炉、电热炉、单/多晶硅生产设备)").getId();
monitorPO.setObjType(objTypeId);
} else { } else {
oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, oracleTerminalExcel.getLoadType()+"字典监测点对象类型不存在,请确认后重试")); oracleTerminalExcelMsg.add(assembleMsg(oracleTerminalExcel, oracleTerminalExcel.getLoadType() + "字典监测点对象类型不存在,请确认后重试"));
continue; continue;
} }
@@ -1700,19 +1738,17 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
monitorPO.setCt2(oracleTerminalExcel.getCt2()); monitorPO.setCt2(oracleTerminalExcel.getCt2());
if(oracleTerminalExcel.getLoadType().equals("光伏电站") || oracleTerminalExcel.getLoadType().equals("风电场")){ if (oracleTerminalExcel.getLoadType().equals("光伏电站") || oracleTerminalExcel.getLoadType().equals("风电场")) {
monitorPO.setFieldStation("01"); monitorPO.setFieldStation("01");
} }
if(oracleTerminalExcel.getPowerFlag() == 0){ if (oracleTerminalExcel.getPowerFlag() == 0) {
monitorPO.setPowerFlag("101"); monitorPO.setPowerFlag("101");
}else if(oracleTerminalExcel.getPowerFlag() == 1){ } else if (oracleTerminalExcel.getPowerFlag() == 1) {
monitorPO.setPowerFlag("102"); monitorPO.setPowerFlag("102");
} }
if (Objects.isNull(lineBak) && Objects.isNull(monitor)) { if (Objects.isNull(lineBak) && Objects.isNull(monitor)) {
monitorPO.setIsUpToGrid(0); monitorPO.setIsUpToGrid(0);
monitorMapper.insert(monitorPO); monitorMapper.insert(monitorPO);
@@ -1756,6 +1792,9 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
} }
} }
}
}
} }

View File

@@ -139,7 +139,7 @@ public class RmpEventDetailController extends BaseController {
*/ */
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getImMonitorEvents") @PostMapping("/getImMonitorEvents")
@ApiOperation("暂降事件记录") @ApiOperation("查询重要监测点指定时间发生的暂降次数")
public HttpResult<List<Map<String,Object>>> getImMonitorEvents(@RequestBody EventBaseParam param) { public HttpResult<List<Map<String,Object>>> getImMonitorEvents(@RequestBody EventBaseParam param) {
String methodDescribe = getMethodDescribe("getImMonitorEvents"); String methodDescribe = getMethodDescribe("getImMonitorEvents");
List<Map<String,Object>> result = rmpEventDetailService.getImMonitorEvents(param); List<Map<String,Object>> result = rmpEventDetailService.getImMonitorEvents(param);

View File

@@ -399,6 +399,7 @@ public class RmpEventDetailServiceImpl extends ServiceImpl<RmpEventDetailMapper,
@Override @Override
public List<Map<String, Object>> getImMonitorEvents(EventBaseParam param) { public List<Map<String, Object>> getImMonitorEvents(EventBaseParam param) {
List<Map<String,Object>> mapList = new ArrayList<>();
DictData eventDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.VOLTAGE_DIP.getCode(),DicDataTypeEnum.EVENT_STATIS.getCode()).getData(); DictData eventDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.VOLTAGE_DIP.getCode(),DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
DictData dictData = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.MOST_IMPORMENT.getCode(),DicDataTypeEnum.DEV_GRADE.getCode()).getData(); DictData dictData = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.MOST_IMPORMENT.getCode(),DicDataTypeEnum.DEV_GRADE.getCode()).getData();
@@ -408,6 +409,9 @@ public class RmpEventDetailServiceImpl extends ServiceImpl<RmpEventDetailMapper,
queryWrapper.eq("measurement_point_id",param.getSearchValue()); queryWrapper.eq("measurement_point_id",param.getSearchValue());
}else { }else {
List<String> lineIds = lineFeignClient.getLevelMonitorIdByDept(dictData.getId(),param.getDeptId()).getData(); List<String> lineIds = lineFeignClient.getLevelMonitorIdByDept(dictData.getId(),param.getDeptId()).getData();
if(CollUtil.isEmpty(lineIds)){
return mapList;
}
queryWrapper.in("measurement_point_id",lineIds); queryWrapper.in("measurement_point_id",lineIds);
} }
@@ -415,13 +419,17 @@ public class RmpEventDetailServiceImpl extends ServiceImpl<RmpEventDetailMapper,
queryWrapper.select("measurement_point_id as lineId","count(event_id) as eventCount").between("start_time",param.getSearchBeginTime(),param.getSearchEndTime()) queryWrapper.select("measurement_point_id as lineId","count(event_id) as eventCount").between("start_time",param.getSearchBeginTime(),param.getSearchEndTime())
.eq("event_type",eventDic.getId()) .eq("event_type",eventDic.getId())
.groupBy("measurement_point_id"); .groupBy("measurement_point_id");
List<Map<String,Object>> mapList = this.baseMapper.selectMaps(queryWrapper); mapList = this.baseMapper.selectMaps(queryWrapper);
if(CollUtil.isEmpty(mapList)){
return mapList;
}
List<String> ids = mapList.stream().map(it->it.get("lineId").toString()).distinct().collect(Collectors.toList()); List<String> ids = mapList.stream().map(it->it.get("lineId").toString()).distinct().collect(Collectors.toList());
List<Line> lineList = lineFeignClient.getBaseLineList(ids).getData(); List<AreaLineInfoVO> lineList = lineFeignClient.getBaseLineAreaInfo(ids).getData();
Map<String,Line> lineMap = lineList.stream().collect(Collectors.toMap(Line::getId,Function.identity())); Map<String,AreaLineInfoVO> lineMap = lineList.stream().collect(Collectors.toMap(AreaLineInfoVO::getLineId,Function.identity()));
mapList.forEach(item->{ mapList.forEach(item->{
item.put("lineName",lineMap.get(item.get("lineId")).getName()); AreaLineInfoVO tem = lineMap.get(item.get("lineId").toString());
item.put("lineName",tem.getVoltageName()+"_"+tem.getLineName());
}); });
return mapList; return mapList;

View File

@@ -74,6 +74,10 @@ import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -112,6 +116,9 @@ public class CustomReportServiceImpl implements CustomReportService {
private final WlRecordFeignClient wlRecordFeignClient; private final WlRecordFeignClient wlRecordFeignClient;
private final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1);
@Override @Override
public boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam) { public boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam) {
checkName(reportTemplateParam, false); checkName(reportTemplateParam, false);
@@ -251,18 +258,16 @@ public class CustomReportServiceImpl implements CustomReportService {
if (Objects.isNull(excelRptTemp)) { if (Objects.isNull(excelRptTemp)) {
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE); throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE);
} }
if(Objects.isNull(reportSearchParam.getCustomType())){ if (Objects.isNull(reportSearchParam.getCustomType())) {
//通用报表 //通用报表
analyzeReport(reportSearchParam, excelRptTemp, response); analyzeReport(reportSearchParam, excelRptTemp, response);
}else { } else {
//浙江无线报表 //浙江无线报表
analyzeReportZhejiang(reportSearchParam, excelRptTemp, response); analyzeReportZhejiang(reportSearchParam, excelRptTemp, response);
} }
} }
@Override @Override
public List<ReportTreeVO> reportChooseTree() { public List<ReportTreeVO> reportChooseTree() {
DictData dic = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.CS_DATA_TYPE.getName(), DicDataEnum.EPD.getName()).getData(); DictData dic = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.CS_DATA_TYPE.getName(), DicDataEnum.EPD.getName()).getData();
@@ -598,6 +603,8 @@ public class CustomReportServiceImpl implements CustomReportService {
System.out.println(sql); System.out.println(sql);
long l = System.currentTimeMillis(); long l = System.currentTimeMillis();
List<Map<String, Object>> mapList = SqlRunner.db().selectList(sql.toString()); List<Map<String, Object>> mapList = SqlRunner.db().selectList(sql.toString());
long la = System.currentTimeMillis(); long la = System.currentTimeMillis();
@@ -652,6 +659,7 @@ public class CustomReportServiceImpl implements CustomReportService {
*/ */
private void analyzeReport(ReportSearchParam reportSearchParam, ExcelRptTemp excelRptTemp, HttpServletResponse response) { private void analyzeReport(ReportSearchParam reportSearchParam, ExcelRptTemp excelRptTemp, HttpServletResponse response) {
List<Future<?>> futures = new ArrayList<>();
long begin = System.currentTimeMillis(); long begin = System.currentTimeMillis();
@@ -688,7 +696,11 @@ public class CustomReportServiceImpl implements CustomReportService {
//定义存放越限指标的map //定义存放越限指标的map
Map<String, ReportTemplateDTO> assNoPassMap = new HashMap<>(); Map<String, ReportTemplateDTO> assNoPassMap = new HashMap<>();
long deal = System.currentTimeMillis(); long deal = System.currentTimeMillis();
classMap.forEach((classKey, templateValue) -> { classMap.forEach((classKey, templateValue) -> {
Map<String, List<ReportTemplateDTO>> valueTypeMap = templateValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod)); Map<String, List<ReportTemplateDTO>> valueTypeMap = templateValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod));
//avg.max,min,cp95 //avg.max,min,cp95
valueTypeMap.forEach((valueTypeKey, valueTypeVal) -> { valueTypeMap.forEach((valueTypeKey, valueTypeVal) -> {
@@ -696,6 +708,7 @@ public class CustomReportServiceImpl implements CustomReportService {
//相别分组 //相别分组
Map<String, List<ReportTemplateDTO>> phaseMap = valueTypeVal.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getPhase)); Map<String, List<ReportTemplateDTO>> phaseMap = valueTypeVal.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getPhase));
phaseMap.forEach((phaseKey, phaseVal) -> { phaseMap.forEach((phaseKey, phaseVal) -> {
futures.add(executorService.submit(() -> {
StringBuilder sql = new StringBuilder(InfluxDbSqlConstant.SELECT); StringBuilder sql = new StringBuilder(InfluxDbSqlConstant.SELECT);
if (InfluxDbSqlConstant.MAX.equalsIgnoreCase(valueTypeKey)) { if (InfluxDbSqlConstant.MAX.equalsIgnoreCase(valueTypeKey)) {
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.MAX, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap); assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.MAX, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
@@ -706,13 +719,27 @@ public class CustomReportServiceImpl implements CustomReportService {
} else if (InfluxDbSqlConstant.CP95.equalsIgnoreCase(valueTypeKey)) { } else if (InfluxDbSqlConstant.CP95.equalsIgnoreCase(valueTypeKey)) {
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.CP95, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap); assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.CP95, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
} }
}); }));
}); });
}); });
});
// 等待所有任务完成
for (Future<?> future : futures) {
try {
future.get(); // 这会阻塞直到任务完成或抛出异常
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
//处理指标最终判定合格还是不合格 //处理指标最终判定合格还是不合格
dealTargetResult(assNoPassMap,limitTargetMapX,endList); dealTargetResult(assNoPassMap, limitTargetMapX, endList);
long dealEnd = System.currentTimeMillis(); long dealEnd = System.currentTimeMillis();
System.out.println("模板解析时间:" + (temEnd - begin) / 1000 + "S"); System.out.println("模板解析时间:" + (temEnd - begin) / 1000 + "S");
@@ -819,7 +846,9 @@ public class CustomReportServiceImpl implements CustomReportService {
* @author cdf * @author cdf
* @date 2023/10/20 * @date 2023/10/20
*/ */
private void parseTemplate(JSONArray jsonArray, List<ReportTemplateDTO> reportTemplateDTOList, List<ReportTemplateDTO> reportLimitList, List<ReportTemplateDTO> terminalList) { private void parseTemplate (JSONArray
jsonArray, List < ReportTemplateDTO > reportTemplateDTOList, List < ReportTemplateDTO > reportLimitList, List < ReportTemplateDTO > terminalList)
{
try { try {
//通过文件服务器获取 //通过文件服务器获取
@@ -898,7 +927,8 @@ public class CustomReportServiceImpl implements CustomReportService {
* @author cdf * @author cdf
* @date 2023/10/23 * @date 2023/10/23
*/ */
private Map<String, Float> overLimitDeal(List<ReportTemplateDTO> reportLimitList, ReportSearchParam reportSearchParam) { private Map<String, Float> overLimitDeal (List < ReportTemplateDTO > reportLimitList, ReportSearchParam
reportSearchParam){
Map<String, Float> limitMap = new HashMap<>(); Map<String, Float> limitMap = new HashMap<>();
if (CollUtil.isNotEmpty(reportLimitList)) { if (CollUtil.isNotEmpty(reportLimitList)) {
StringBuilder sql = new StringBuilder("select "); StringBuilder sql = new StringBuilder("select ");
@@ -927,7 +957,7 @@ public class CustomReportServiceImpl implements CustomReportService {
/** /**
* 报告下载 * 报告下载
*/ */
private void downReport(JSONArray jsonArray, HttpServletResponse response) { private void downReport (JSONArray jsonArray, HttpServletResponse response){
InputStream reportStream = IoUtil.toStream(jsonArray.toString(), CharsetUtil.UTF_8); InputStream reportStream = IoUtil.toStream(jsonArray.toString(), CharsetUtil.UTF_8);
//String newContent = fileStorageUtil.uploadStream(reportStream, OssPath.HARMONIC_EXCEL_REPORT, FileUtil.generateFileName("json")); //String newContent = fileStorageUtil.uploadStream(reportStream, OssPath.HARMONIC_EXCEL_REPORT, FileUtil.generateFileName("json"));
@@ -950,7 +980,8 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
private void analyzeReportZhejiang(ReportSearchParam reportSearchParam, ExcelRptTemp excelRptTemp, HttpServletResponse response) { private void analyzeReportZhejiang (ReportSearchParam reportSearchParam, ExcelRptTemp
excelRptTemp, HttpServletResponse response){
//指标 //指标
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>(); List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
@@ -966,10 +997,6 @@ public class CustomReportServiceImpl implements CustomReportService {
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON); throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
} }
long temEnd = System.currentTimeMillis();
//处理指标是否合格 //处理指标是否合格
reportLimitList = new LinkedHashSet<>(reportLimitList) reportLimitList = new LinkedHashSet<>(reportLimitList)
.stream() .stream()
@@ -1024,7 +1051,7 @@ public class CustomReportServiceImpl implements CustomReportService {
}); });
//处理指标最终判定合格还是不合格 //处理指标最终判定合格还是不合格
dealTargetResult(assNoPassMap,limitTargetMapX,endList); dealTargetResult(assNoPassMap, limitTargetMapX, endList);
long dealEnd = System.currentTimeMillis(); long dealEnd = System.currentTimeMillis();
System.out.println("查询数据库花费时间" + (dealEnd - deal) / 1000 + "S"); System.out.println("查询数据库花费时间" + (dealEnd - deal) / 1000 + "S");
@@ -1047,7 +1074,7 @@ public class CustomReportServiceImpl implements CustomReportService {
//2、把itemName的value赋给v和m //2、把itemName的value赋给v和m
dealExcelResult(jsonArray,assMap,unit); dealExcelResult(jsonArray, assMap, unit);
long jieEnd = System.currentTimeMillis(); long jieEnd = System.currentTimeMillis();
System.out.println("组装信息耗时 " + (jieEnd - jie) / 1000 + "S"); System.out.println("组装信息耗时 " + (jieEnd - jie) / 1000 + "S");
@@ -1063,7 +1090,10 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
private void assSqlZhejiang(List<ReportTemplateDTO> data, StringBuilder sql, List<ReportTemplateDTO> endList, String method, ReportSearchParam reportSearchParam, Map<String, ReportTemplateDTO> limitMap, Map<String, Float> overLimitMap, Map<String, ReportTemplateDTO> assNoPassMap, List<WlRecord> wlRecordList) { private void assSqlZhejiang (List < ReportTemplateDTO > data, StringBuilder
sql, List < ReportTemplateDTO > endList, String method, ReportSearchParam
reportSearchParam, Map < String, ReportTemplateDTO > limitMap, Map < String, Float > overLimitMap, Map < String, ReportTemplateDTO > assNoPassMap, List < WlRecord > wlRecordList)
{
//sql拼接示例select MAX(IHA2) as IHA2 from power_quality_data where Phase = 'A' and LineId='1324564568' and Stat_Method='max' tz('Asia/Shanghai') //sql拼接示例select MAX(IHA2) as IHA2 from power_quality_data where Phase = 'A' and LineId='1324564568' and Stat_Method='max' tz('Asia/Shanghai')
//cp95函数特殊处理 PERCENTILE(field_key, N) //cp95函数特殊处理 PERCENTILE(field_key, N)
if (InfluxDbSqlConstant.PERCENTILE.equals(method)) { if (InfluxDbSqlConstant.PERCENTILE.equals(method)) {
@@ -1184,7 +1214,7 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
private Map<String, Object> dealResultMap(String method, List<Map<String, Object>> allList) { private Map<String, Object> dealResultMap (String method, List < Map < String, Object >> allList){
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
// 遍历列表中的每个Map // 遍历列表中的每个Map
if (method.equals(InfluxDbSqlConstant.MIN)) { if (method.equals(InfluxDbSqlConstant.MIN)) {
@@ -1249,7 +1279,8 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
private void dealExcelResult(JSONArray jsonArray,Map<String,List<ReportTemplateDTO>> assMap,Map<String,String> unit){ private void dealExcelResult (JSONArray
jsonArray, Map < String, List < ReportTemplateDTO >> assMap, Map < String, String > unit){
jsonArray.forEach(item -> { jsonArray.forEach(item -> {
JSONObject jsonObject = (JSONObject) item; JSONObject jsonObject = (JSONObject) item;
JSONArray itemArr = (JSONArray) jsonObject.get("celldata"); JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
@@ -1317,7 +1348,9 @@ public class CustomReportServiceImpl implements CustomReportService {
/** /**
* 处理指标超标结论 * 处理指标超标结论
*/ */
private void dealTargetResult(Map<String,ReportTemplateDTO> assNoPassMap,Map<String,ReportTemplateDTO> limitTargetMapX,List<ReportTemplateDTO> endList){ private void dealTargetResult
(Map < String, ReportTemplateDTO > assNoPassMap, Map < String, ReportTemplateDTO > limitTargetMapX, List < ReportTemplateDTO > endList)
{
assNoPassMap.forEach((key, val) -> { assNoPassMap.forEach((key, val) -> {
limitTargetMapX.remove(key); limitTargetMapX.remove(key);
if ("Voltage_Dev".equals(val.getTemplateName()) || "Freq_Dev".equals(val.getTemplateName())) { if ("Voltage_Dev".equals(val.getTemplateName()) || "Freq_Dev".equals(val.getTemplateName())) {
@@ -1348,7 +1381,9 @@ public class CustomReportServiceImpl implements CustomReportService {
* @author cdf * @author cdf
* @date 2023/10/20 * @date 2023/10/20
*/ */
private void parseTemplateZhejiang(JSONArray jsonArray, List<ReportTemplateDTO> reportTemplateDTOList, List<ReportTemplateDTO> reportLimitList, List<ReportTemplateDTO> terminalList) { private void parseTemplateZhejiang (JSONArray
jsonArray, List < ReportTemplateDTO > reportTemplateDTOList, List < ReportTemplateDTO > reportLimitList, List < ReportTemplateDTO > terminalList)
{
try { try {
//通过文件服务器获取 //通过文件服务器获取
@@ -1421,7 +1456,7 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
} }