1.pms电能质量报表

2.园区功能接口
3.自定义报表(部分)
This commit is contained in:
2024-08-13 10:45:06 +08:00
parent a6f9e30d54
commit 2319895ff4
17 changed files with 1216 additions and 484 deletions

View File

@@ -0,0 +1,135 @@
package com.njcn.harmonic.controller.upload;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.harmonic.pojo.param.DimGlobalDataParam;
import com.njcn.harmonic.pojo.po.upload.RUploadReport;
import com.njcn.harmonic.pojo.vo.DimGlobalDataStandVO;
import com.njcn.harmonic.service.upload.IRUploadReportService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import com.njcn.web.enums.GWSendEnum;
import com.njcn.web.factory.PageFactory;
import com.njcn.web.pojo.param.BaseParam;
import com.njcn.web.pojo.param.SendParam;
import com.njcn.web.utils.GwSendUtil;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.njcn.web.controller.BaseController;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* <p>
* 电能质量报表上送 前端控制器
* </p>
*
* @author cdf
* @since 2024-08-07
*/
@RestController
@RequestMapping("/rUploadReport")
@RequiredArgsConstructor
public class RUploadReportController extends BaseController {
private final IRUploadReportService irUploadReportService;
private final DeptFeignClient deptFeignClient;
/**
* 新增pms电能质量报表
*/
@PostMapping("/addPmsReport")
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@ApiOperation("新增pms电能质量报表")
@ApiImplicitParam(name = "rUploadReport", value = "条件参数", required = true)
public HttpResult<Boolean> addPmsReport(@RequestBody @Validated RUploadReport rUploadReport){
String methodDescribe = getMethodDescribe("addPmsReport");
Dept dept = deptFeignClient.getRootDept().getData();
List<Dept> deptList = deptFeignClient.getDirectSonSelf(dept.getId()).getData();
Optional<Dept> optional = deptList.stream().filter(item->item.getPid().equals(dept.getId())).findFirst();
if(optional.isPresent()){
Dept d = optional.get();
rUploadReport.setProvinceOrg(d.getCode());
rUploadReport.setProvinceOrgName(d.getName());
}
rUploadReport.setIsDelete("0");
rUploadReport.setUploadStatus(0);
long count = irUploadReportService.count(new LambdaQueryWrapper<RUploadReport>().eq(RUploadReport::getProvinceOrg,rUploadReport.getProvinceOrg()));
if(count>0){
throw new BusinessException("已经存在该省电能质量报告");
}
irUploadReportService.save(rUploadReport);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
/**
* 修改pms电能质量报表
*/
@PostMapping("/updatePmsReport")
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.UPLOAD)
@ApiOperation("修改pms电能质量报表")
@ApiImplicitParam(name = "rUploadReport", value = "条件参数", required = true)
public HttpResult<Boolean> updatePmsReport(@RequestBody @Validated RUploadReport rUploadReport){
String methodDescribe = getMethodDescribe("updatePmsReport");
irUploadReportService.updateById(rUploadReport);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
/**
* 删除pms电能质量报表
*/
@PostMapping("/delPmsReport")
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.DELETE)
@ApiOperation("删除pms电能质量报表")
public HttpResult<Boolean> delPmsReport(@RequestBody List<String> ids){
String methodDescribe = getMethodDescribe("delPmsReport");
irUploadReportService.removeByIds(ids);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@PostMapping("/pagePmsReportList")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("列表集合")
public HttpResult<Page<RUploadReport>> pagePmsReportList(@RequestBody BaseParam baseParam){
String methodDescribe = getMethodDescribe("pagePmsReportList");
Page<RUploadReport> reportList = irUploadReportService.page(new Page<>(PageFactory.getPageNum(baseParam),PageFactory.getPageSize(baseParam)));
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, reportList, methodDescribe);
}
@PostMapping("/uploadGw")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("上送电能质量报表数据新增或更新")
public HttpResult<Integer> uploadGw(@RequestBody List<String> ids){
String methodDescribe = getMethodDescribe("uploadGw");
List<RUploadReport> reportList = irUploadReportService.listByIds(ids);
SendParam sendParam = new SendParam();
sendParam.setStats(reportList);
Map<String,String> map = GwSendUtil.send(sendParam, GWSendEnum.REPORT_CREATE);
int result = GwSendUtil.returnInfoMsg(ids,map);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -0,0 +1,17 @@
package com.njcn.harmonic.mapper.upload;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.upload.RUploadReport;
/**
* <p>
* 电能质量报表上送 Mapper 接口
* </p>
*
* @author xy
* @since 2024-08-07
*/
public interface RUploadReportMapper extends BaseMapper<RUploadReport> {
}

View File

@@ -8,6 +8,7 @@ import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.toolkit.SqlRunner;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.utils.FileUtil;
@@ -397,9 +398,9 @@ public class CustomReportServiceImpl implements CustomReportService {
tem = "#NO";
}
if (StrUtil.isNotBlank(twoKey)) {
reportTreeStat.setName("$" + oneKey + "#" + twoKey + "#" + statItem + "#" + item.getClassId().trim() + tem.trim() + "$");
reportTreeStat.setName("$" + oneKey + "#" + twoKey + "#" + statItem + "#" + item.getResourcesId().trim() + tem.trim() + "$");
} else {
reportTreeStat.setName("$" + oneKey + "#" + statItem + "#" + item.getClassId().trim() + tem.trim() + "$");
reportTreeStat.setName("$" + oneKey + "#" + statItem + "#" + item.getResourcesId().trim() + tem.trim() + "$");
}
reportTreeStat.setShowName(statItem);
@@ -437,146 +438,6 @@ public class CustomReportServiceImpl implements CustomReportService {
}
/**
* 解析报表模板赋值数据
*/
/* private void analyzeReport(ReportSearchParam reportSearchParam, ExcelRptTemp excelRptTemp,HttpServletResponse response) {
//根据content获取v值并进行处理
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
JSONArray jsonArray;
try (InputStream fileStream = fileStorageUtil.getFileStream(excelRptTemp.getContent())) {
//通过文件服务器获取
jsonArray = new JSONArray(new JSONTokener(fileStream, new JSONConfig()));
jsonArray.forEach(item -> {
JSONObject jsonObject = (JSONObject) item;
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
itemArr.forEach((it) -> {
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
//获取到1列
JSONObject data = (JSONObject) it;
JSONObject son = (JSONObject) data.get("v");
if (son.containsKey("v")) {
String v = son.getStr("v");
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
if (v.charAt(0) == '$' && v.contains("#")) {
//剔除前后$
v = v.replace("$", "");
//封装ReportTemplateDTO
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
reportTemplateDTO.setItemName(v);
//根据#分割数据
String[] vItem = v.split("#");
if (vItem.length == 4) {
//$HA[_25]#B#max#classId$
reportTemplateDTO.setTemplateName(vItem[0]);
reportTemplateDTO.setPhase(vItem[1].substring(0, 1));
reportTemplateDTO.setStatMethod(vItem[2].toUpperCase());
reportTemplateDTO.setClassId(vItem[3]);
} else if (vItem.length == 3) {
//$HA[_25]#max#classId$
reportTemplateDTO.setTemplateName(vItem[0]);
reportTemplateDTO.setPhase("M");
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
reportTemplateDTO.setClassId(vItem[2]);
}
reportTemplateDTOList.add(reportTemplateDTO);
}
}
}
});
});
} catch (Exception e) {
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
}
List<ReportTemplateDTO> endList = new ArrayList<>();
if (CollUtil.isNotEmpty(reportTemplateDTOList)) {
//开始组织sql
reportTemplateDTOList.stream().forEach(data -> {
StringBuilder sql = new StringBuilder(InfluxDbSqlConstant.SELECT);
if (InfluxDbSqlConstant.MAX.equalsIgnoreCase(data.getStatMethod())) {
assSql(data, sql, endList, InfluxDbSqlConstant.MAX, reportSearchParam);
} else if (InfluxDbSqlConstant.MIN.equalsIgnoreCase(data.getStatMethod())) {
assSql(data, sql, endList, InfluxDbSqlConstant.MIN, reportSearchParam);
} else if (InfluxDbSqlConstant.AVG_WEB.equalsIgnoreCase(data.getStatMethod())) {
assSql(data, sql, endList, InfluxDbSqlConstant.AVG, reportSearchParam);
} else if (InfluxDbSqlConstant.CP95.equalsIgnoreCase(data.getStatMethod())) {
assSql(data, sql, endList, InfluxDbSqlConstant.PERCENTILE, reportSearchParam);
}
});
}
if (CollUtil.isNotEmpty(endList)) {
//数据单位信息
Map<String, String> unit = unitMap(reportSearchParam.getLineId());
//进行反向赋值到模板
//1、根据itemName分组
Map<String, List<ReportTemplateDTO>> assMap = endList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getItemName));
//2、把itemName的value赋给v和m
jsonArray.forEach(item -> {
JSONObject jsonObject = (JSONObject) item;
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
itemArr.forEach((it) -> {
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
//获取到1列
JSONObject data = (JSONObject) it;
JSONObject son = (JSONObject) data.get("v");
if (son.containsKey("v")) {
String v = son.getStr("v");
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
if (v.charAt(0) == '$' && v.contains("#")) {
String str = "";
if(Objects.nonNull(assMap.get(v.replace("$", "")))){
str = assMap.get(v.replace("$", "")).get(0).getValue();
//没有值,赋"/"
if (StringUtils.isBlank(str)) {
str = "/";
}
son.set("v", str);
}
}
//解决数据单位问题 @指标#类型@
if (v.charAt(0) == '@' && v.contains("#")) {
String replace = v.replace("@", "");
son.set("v", unit.getOrDefault(replace, "/"));
}
}
}
});
});
}
InputStream reportStream = IoUtil.toStream(jsonArray.toString(), CharsetUtil.UTF_8);
String newContent = fileStorageUtil.uploadStream(reportStream, OssPath.HARMONIC_EXCEL_REPORT, FileUtil.generateFileName("json"));
response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename="+"aa");
//入库前判断是否有了,有了就更新
ExcelRpt excelRpt = new ExcelRpt();
excelRpt.setName(excelRptTemp.getName());
excelRpt.setLineId(reportSearchParam.getLineId());
excelRpt.setDataDate(DateUtil.parse(reportSearchParam.getStartTime()));
excelRpt.setTempId(excelRptTemp.getId());
excelRpt.setContent(newContent);
excelRpt.setType(reportSearchParam.getType());
excelRpt.setState(DataStateEnum.ENABLE.getCode());
excelRptMapper.insert(excelRpt);
OutputStream toClient = null;
try {
toClient = new BufferedOutputStream(response.getOutputStream());
//通过IOUtils对接输入输出流实现文件下载
IOUtils.copy(reportStream, toClient);
toClient.flush();
} catch (Exception e) {
throw new BusinessException(OssResponseEnum.DOWNLOAD_FILE_STREAM_ERROR);
} finally {
IOUtils.closeQuietly(reportStream);
IOUtils.closeQuietly(toClient);
}
}*/
/**
@@ -636,99 +497,6 @@ public class CustomReportServiceImpl implements CustomReportService {
return unit;
}
/**
* 组装influxDB查询sql查询value并封装endlist
*
* @return 结果
*/
private void assSql(ReportTemplateDTO data, StringBuilder sql, List<ReportTemplateDTO> endList, String method, ReportSearchParam reportSearchParam) {
//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)
if (InfluxDbSqlConstant.PERCENTILE.equals(method)) {
sql.append(method)
.append(InfluxDbSqlConstant.LBK)
.append(data.getTemplateName())
.append(InfluxDbSqlConstant.NUM_95)
.append(InfluxDbSqlConstant.RBK)
.append(InfluxDbSqlConstant.AS_VALUE);
} else {
sql.append(method)
.append(InfluxDbSqlConstant.LBK)
.append(data.getTemplateName())
.append(InfluxDbSqlConstant.RBK)
.append(InfluxDbSqlConstant.AS_VALUE);
}
if (reportSearchParam.getResourceType() == 1) {
sql.append(InfluxDbSqlConstant.FROM)
.append(data.getClassId().replace("data", "day"));
} else {
sql.append(InfluxDbSqlConstant.FROM)
.append(data.getClassId());
}
sql.append(InfluxDbSqlConstant.WHERE)
.append(InfluxDBTableConstant.LINE_ID)
.append(InfluxDbSqlConstant.EQ)
.append(InfluxDbSqlConstant.QM)
.append(reportSearchParam.getLineId())
.append(InfluxDbSqlConstant.QM);
//相别特殊处理
if (!InfluxDBTableConstant.NO_PHASE.equals(data.getPhase())) {
sql.append(InfluxDbSqlConstant.AND)
.append(InfluxDBTableConstant.PHASIC_TYPE)
.append(InfluxDbSqlConstant.EQ)
.append(InfluxDbSqlConstant.QM)
.append(data.getPhase())
.append(InfluxDbSqlConstant.QM);
}
//data_flicker、data_fluc、data_plt 无 value_type
if (!InfluxDBTableConstant.DATA_FLICKER.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_FLUC.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_PLT.equals(data.getClassId())) {
sql.append(InfluxDbSqlConstant.AND)
.append(InfluxDBTableConstant.VALUE_TYPE)
.append(InfluxDbSqlConstant.EQ)
.append(InfluxDbSqlConstant.QM)
.append(data.getStatMethod())
.append(InfluxDbSqlConstant.QM);
}
//频率和频率偏差仅统计T相
if (data.getTemplateName().equals("freq_dev") || data.getTemplateName().equals("freq")) {
sql.append(InfluxDbSqlConstant.AND)
.append(InfluxDBTableConstant.PHASIC_TYPE)
.append(InfluxDbSqlConstant.EQ)
.append(InfluxDbSqlConstant.QM)
.append(InfluxDBTableConstant.PHASE_TYPE_T)
.append(InfluxDbSqlConstant.QM);
}
//时间范围处理
sql
.append(InfluxDbSqlConstant.AND)
.append(InfluxDbSqlConstant.TIME).append(InfluxDbSqlConstant.GE).append(InfluxDbSqlConstant.QM).append(reportSearchParam.getStartTime()).append(InfluxDbSqlConstant.START_TIME).append(InfluxDbSqlConstant.QM)
.append(InfluxDbSqlConstant.AND)
.append(InfluxDbSqlConstant.TIME).append(InfluxDbSqlConstant.LT).append(InfluxDbSqlConstant.QM).append(reportSearchParam.getEndTime()).append(InfluxDbSqlConstant.END_TIME).append(InfluxDbSqlConstant.QM);
System.out.println(sql);
sql.append(InfluxDbSqlConstant.TZ);
if (data.getTemplateName().equals("freq_dev") || data.getTemplateName().equals("freq")) {
System.out.println(sql);
}
StatisticalDataDTO statisticalDataDTO = commonService.selectBySql(sql);
//根据不同的库表赋值
if (Objects.isNull(statisticalDataDTO)) {
data.setValue("/");
} else {
data.setValue(String.format("%.3f", statisticalDataDTO.getValue()));
}
endList.add(data);
}
/**
@@ -748,18 +516,16 @@ public class CustomReportServiceImpl implements CustomReportService {
for (int i = 0; i < data.size(); i++) {
if (i == data.size() - 1) {
sql.append(method)
sql.append("MAX")
.append(InfluxDbSqlConstant.LBK)
.append(data.get(i).getTemplateName())
.append(InfluxDbSqlConstant.NUM_95)
.append(InfluxDbSqlConstant.RBK)
.append(InfluxDbSqlConstant.AS).append(InfluxDbSqlConstant.DQM)
.append(data.get(i).getItemName()).append(InfluxDbSqlConstant.DQM);
} else {
sql.append(method)
sql.append("MAX")
.append(InfluxDbSqlConstant.LBK)
.append(data.get(i).getTemplateName())
.append(InfluxDbSqlConstant.NUM_95)
.append(InfluxDbSqlConstant.RBK)
.append(InfluxDbSqlConstant.AS).append(InfluxDbSqlConstant.DQM)
.append(data.get(i).getItemName()).append(InfluxDbSqlConstant.DQM).append(StrUtil.COMMA);
@@ -788,14 +554,10 @@ public class CustomReportServiceImpl implements CustomReportService {
}
sql.append(StrPool.C_SPACE);
if (reportSearchParam.getResourceType() == 1) {
sql.append(InfluxDbSqlConstant.FROM)
.append(data.get(0).getClassId().replace("data", "day"));
} else {
sql.append(InfluxDbSqlConstant.FROM)
.append(data.get(0).getClassId());
}
sql.append(StrPool.C_SPACE)
.append(InfluxDbSqlConstant.FROM)
.append(data.get(0).getResourceId());
sql.append(InfluxDbSqlConstant.WHERE)
.append(InfluxDBTableConstant.LINE_ID)
@@ -815,14 +577,15 @@ public class CustomReportServiceImpl implements CustomReportService {
//data_flicker、data_fluc、data_plt 无 value_type
if (!InfluxDBTableConstant.DATA_FLICKER.equals(data.get(0).getClassId()) && !InfluxDBTableConstant.DATA_FLUC.equals(data.get(0).getClassId()) && !InfluxDBTableConstant.DATA_PLT.equals(data.get(0).getClassId())) {
//if (!"r_stat_data_flicker_d".equals(data.get(0).getResourceId()) && !"r_stat_data_fluc_d".equals(data.get(0).getResourceId()) && !"r_stat_data_plt_d".equals(data.get(0).getResourceId())) {
sql.append(InfluxDbSqlConstant.AND)
.append(InfluxDBTableConstant.VALUE_TYPE)
.append(InfluxDbSqlConstant.EQ)
.append(InfluxDbSqlConstant.QM)
.append(data.get(0).getStatMethod())
.append(InfluxDbSqlConstant.QM);
}
//}
//频率和频率偏差仅统计T相
if (data.get(0).getTemplateName().equals("freq_dev") || data.get(0).getTemplateName().equals("freq")) {
@@ -834,29 +597,28 @@ public class CustomReportServiceImpl implements CustomReportService {
.append(InfluxDbSqlConstant.QM);
}
//时间范围处理
sql
.append(InfluxDbSqlConstant.AND)
sql.append(InfluxDbSqlConstant.AND)
.append(InfluxDbSqlConstant.TIME).append(InfluxDbSqlConstant.GE).append(InfluxDbSqlConstant.QM).append(reportSearchParam.getStartTime()).append(InfluxDbSqlConstant.START_TIME).append(InfluxDbSqlConstant.QM)
.append(InfluxDbSqlConstant.AND)
.append(InfluxDbSqlConstant.TIME).append(InfluxDbSqlConstant.LT).append(InfluxDbSqlConstant.QM).append(reportSearchParam.getEndTime()).append(InfluxDbSqlConstant.END_TIME).append(InfluxDbSqlConstant.QM);
System.out.println(sql);
sql.append(InfluxDbSqlConstant.TZ);
if (data.get(0).getTemplateName().equals("freq_dev") || data.get(0).getTemplateName().equals("freq")) {
System.out.println(sql);
}
List<Map<String, Object>> mapList = influxDbUtils.getMapResult(sql.toString());
List<Map<String,Object>> mapList = SqlRunner.db().selectList(sql.toString());
if (CollUtil.isEmpty(mapList)) {
data = data.stream().peek(item -> item.setValue("/")).collect(Collectors.toList());
} else {
Map<String, Object> map = mapList.get(0);
for (ReportTemplateDTO item : data) {
if (map.containsKey(item.getItemName())) {
double v = (Double) map.get(item.getItemName());
if (Objects.nonNull(map) && map.containsKey(item.getItemName())) {
double v = Double.parseDouble(map.get(item.getItemName()).toString());
item.setValue(String.format("%.3f", v));
if (overLimitMap.containsKey(item.getLimitName())) {
@@ -918,8 +680,7 @@ public class CustomReportServiceImpl implements CustomReportService {
} catch (Exception e) {
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
}
//处理查日表还是分钟表
rangeDate(reportSearchParam);
long temEnd = System.currentTimeMillis();
@@ -941,7 +702,7 @@ public class CustomReportServiceImpl implements CustomReportService {
.collect(Collectors.collectingAndThen(Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(ReportTemplateDTO::getItemName))), ArrayList::new));
Map<String, List<ReportTemplateDTO>> classMap = reportTemplateDTOList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getClassId));
Map<String, List<ReportTemplateDTO>> classMap = reportTemplateDTOList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getResourceId));
Map<String, ReportTemplateDTO> assNoPassMap = new HashMap<>();
classMap.forEach((classKey, templateValue) -> {
Map<String, List<ReportTemplateDTO>> valueTypeMap = templateValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod));
@@ -958,7 +719,7 @@ public class CustomReportServiceImpl implements CustomReportService {
} else if (InfluxDbSqlConstant.MIN.equalsIgnoreCase(valueTypeKey)) {
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.MIN, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
} else if (InfluxDbSqlConstant.AVG_WEB.equalsIgnoreCase(valueTypeKey)) {
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.AVG, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.AVG_WEB, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
} else if (InfluxDbSqlConstant.CP95.equalsIgnoreCase(valueTypeKey)) {
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.PERCENTILE, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
}
@@ -1155,14 +916,14 @@ public class CustomReportServiceImpl implements CustomReportService {
reportTemplateDTO.setTemplateName(vItem[0]);
reportTemplateDTO.setPhase(vItem[1].substring(0, 1));
reportTemplateDTO.setStatMethod(vItem[2].toUpperCase());
reportTemplateDTO.setClassId(vItem[3]);
reportTemplateDTO.setResourceId(vItem[3]);
reportTemplateDTO.setLimitName(vItem[4]);
} else if (vItem.length == 4) {
//$HA[_25]#max#classId$
reportTemplateDTO.setTemplateName(vItem[0]);
reportTemplateDTO.setPhase("M");
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
reportTemplateDTO.setClassId(vItem[2]);
reportTemplateDTO.setResourceId(vItem[2]);
reportTemplateDTO.setLimitName(vItem[3]);
}
@@ -1179,7 +940,7 @@ public class CustomReportServiceImpl implements CustomReportService {
//$HA[_25]#B#max#classId$
reportTemplateDTO.setTemplateName(vItem[0]);
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
reportTemplateDTO.setClassId(vItem[2]);
reportTemplateDTO.setResourceId(vItem[2]);
}
reportLimitList.add(reportTemplateDTO);
} else if (v.charAt(0) == '&') {
@@ -1199,35 +960,7 @@ public class CustomReportServiceImpl implements CustomReportService {
}
}
/**
* 获取两个时间之间的天数
*
* @author cdf
* @date 2023/10/20
*/
private void rangeDate(ReportSearchParam reportSearchParam) {
long a;
DateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
try {
//开始时间
Date star = dft.parse(reportSearchParam.getStartTime());
//结束时间
Date endDay = dft.parse(reportSearchParam.getEndTime());
Long starTimes = star.getTime();
Long endTimes = endDay.getTime();
long num = endTimes - starTimes;//时间戳相差的毫秒数
a = num / 24 / 60 / 60 / 1000;
if (a > 5) {
//返回天表
reportSearchParam.setResourceType(1);
} else {
//返回分钟
reportSearchParam.setResourceType(0);
}
} catch (ParseException e) {
throw new BusinessException("时间解析出错!" + e.getMessage());
}
}
/**
* @author cdf
@@ -1245,7 +978,7 @@ public class CustomReportServiceImpl implements CustomReportService {
}
}
sql.append(" from ").append(reportLimitList.get(0).getClassId()).append(" where id ='").append(reportSearchParam.getLineId()).append("'");
sql.append(" from ").append(reportLimitList.get(0).getResourceId()).append(" where id ='").append(reportSearchParam.getLineId()).append("'");
limitMap = excelRptTempMapper.dynamicSqlMap(sql.toString());
for (ReportTemplateDTO item : reportLimitList) {

View File

@@ -0,0 +1,17 @@
package com.njcn.harmonic.service.upload;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.po.upload.RUploadReport;
/**
* <p>
* 电能质量报表上送 服务类
* </p>
*
* @author xy
* @since 2024-08-07
*/
public interface IRUploadReportService extends IService<RUploadReport> {
}

View File

@@ -0,0 +1,21 @@
package com.njcn.harmonic.service.upload.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.mapper.upload.RUploadReportMapper;
import com.njcn.harmonic.pojo.po.upload.RUploadReport;
import com.njcn.harmonic.service.upload.IRUploadReportService;
import org.springframework.stereotype.Service;
/**
* <p>
* 电能质量报表上送 服务实现类
* </p>
*
* @author xy
* @since 2024-08-07
*/
@Service
public class RUploadReportServiceImpl extends ServiceImpl<RUploadReportMapper, RUploadReport> implements IRUploadReportService {
}

View File

@@ -56,6 +56,8 @@ logging:
#mybatis配置信息
mybatis-plus:
type-aliases-package: com.njcn.harmonic.pojo
global-config:
enable-sql-runner: true
mqtt: