1.灿能云接口代码调整

This commit is contained in:
wr
2024-01-03 15:50:58 +08:00
parent 14cb85409c
commit 3b922aa7b3
48 changed files with 1213 additions and 284 deletions

View File

@@ -1,8 +1,6 @@
package com.njcn.cloud.controller.RealTimeInfo;
import cn.hutool.core.util.StrUtil;
import com.njcn.cloud.enums.app.UserCodeEnum;
import com.njcn.cloud.service.user.RealTimeInfoService;
import com.njcn.cloud.service.RealTimeInfoService;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;

View File

@@ -6,9 +6,9 @@ import com.njcn.cloud.pojo.dto.AppDevMsg;
import com.njcn.cloud.pojo.dto.AppEventMsg;
import com.njcn.cloud.pojo.dto.AppSteadyMsg;
import com.njcn.cloud.pojo.vo.MsgInfo;
import com.njcn.cloud.service.user.IAppDevMsgService;
import com.njcn.cloud.service.user.IAppEventMsgService;
import com.njcn.cloud.service.user.IAppSteadyMsgService;
import com.njcn.cloud.service.IAppDevMsgService;
import com.njcn.cloud.service.IAppEventMsgService;
import com.njcn.cloud.service.IAppSteadyMsgService;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;

View File

@@ -1,11 +1,10 @@
package com.njcn.cloud.controller.information;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.cloud.enums.app.EventMsgCodeEnum;
import com.njcn.cloud.pojo.vo.DevComTJ;
import com.njcn.cloud.pojo.vo.DevMsgDetailInfo;
import com.njcn.cloud.service.user.IAppDevMsgService;
import com.njcn.cloud.service.IAppDevMsgService;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;

View File

@@ -1,14 +1,13 @@
package com.njcn.cloud.controller.information;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.cloud.enums.app.EventMsgCodeEnum;
import com.njcn.cloud.pojo.vo.EventEigDetailVO;
import com.njcn.cloud.pojo.vo.EventInfoDetailVO;
import com.njcn.cloud.pojo.vo.EventMsgDetailVO;
import com.njcn.cloud.pojo.vo.EventWaveDetailVO;
import com.njcn.cloud.service.user.IAppEventInfoService;
import com.njcn.cloud.service.user.IAppEventMsgService;
import com.njcn.cloud.service.IAppEventInfoService;
import com.njcn.cloud.service.IAppEventMsgService;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;

View File

@@ -6,7 +6,7 @@ import com.njcn.cloud.pojo.dto.AppSteadyUrl;
import com.njcn.cloud.pojo.vo.AppSteadyMsgVO;
import com.njcn.cloud.pojo.vo.SteadyMsgDetailVO;
import com.njcn.cloud.pojo.vo.SteadyTargetVO;
import com.njcn.cloud.service.user.IAppSteadyMsgService;
import com.njcn.cloud.service.IAppSteadyMsgService;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;

View File

@@ -2,7 +2,7 @@ package com.njcn.cloud.controller.message;
import cn.hutool.core.util.StrUtil;
import com.njcn.cloud.enums.app.UserCodeEnum;
import com.njcn.cloud.service.user.MsgService;
import com.njcn.cloud.service.MsgService;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;

View File

@@ -1,9 +1,14 @@
package com.njcn.cloud.controller.report;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.cloud.enums.app.EventMsgCodeEnum;
import com.njcn.cloud.pojo.dto.AppEventInfo;
import com.njcn.cloud.service.user.IAppReportService;
import com.njcn.cloud.pojo.param.AppReportParam;
import com.njcn.cloud.pojo.vo.ReportVO;
import com.njcn.cloud.service.IAppReportService;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
@@ -14,10 +19,9 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
@RestController
@@ -27,6 +31,40 @@ import org.springframework.web.bind.annotation.RestController;
public class ShiningReportController extends BaseController {
private final IAppReportService shiningReportService;
@PostMapping("/reportList")
@ApiOperation(value = "获取报告入口", notes = "获取报告列表")
public HttpResult<Page> reportList(@RequestBody AppReportParam param) {
String methodDescribe = getMethodDescribe("reportList");
/********************************************************************************
默认:
月报,查前三个月;周报,查当前月;所有监测点
自定义:
没有监测点,查询符合条件所有监测点信息
没有时间按默认的时间段查询
开始时间或者结束时间落在报告起止时间内的都列举出来
*******************************************************************************/
Page<ReportVO> list = shiningReportService.reportList(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@PostMapping("/customReport")
@ApiOperation(value = "自定义时间报告申请入口", notes = "自定义报告申请")
public HttpResult<Integer> customReport(@RequestBody AppReportParam param) {
String methodDescribe = getMethodDescribe("customReport");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DateTime startTime = DateUtil.parse(param.getStartTime());
DateTime endTime = DateUtil.parse(param.getEndTime());
if (param.getQuarter() != null) {
param.setStartTime(sdf.format(DateUtil.beginOfQuarter(startTime)));
param.setEndTime(sdf.format(DateUtil.endOfQuarter(endTime)));
} else {
param.setStartTime(sdf.format(DateUtil.beginOfYear(startTime)));
param.setEndTime(sdf.format(DateUtil.endOfQuarter(endTime)));
}
int i = shiningReportService.customReport(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, i, methodDescribe);
}
@PostMapping("/eventDetailReportApply")
@ApiImplicitParams({@ApiImplicitParam(name = "userId", value = "用户ID", required = true, paramType = "query")

View File

@@ -0,0 +1,25 @@
package com.njcn.cloud.controller.statistics;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.njcn.web.controller.BaseController;
import java.util.Date;
import java.util.List;
/**
* <p>
* 统计消息 前端控制器
* </p>
*
* @author wr
* @since 2024-01-03
*/
@RestController
@RequestMapping("/appStatistics")
public class StatisticsController extends BaseController {
}

View File

@@ -10,7 +10,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.cloud.pojo.dto.AppDevMsg;
import com.njcn.cloud.pojo.dto.AppSteadyAss;
import com.njcn.cloud.pojo.dto.AppSteadyUrl;
import com.njcn.cloud.service.user.*;
import com.njcn.cloud.service.IAppDevMsgService;
import com.njcn.cloud.service.IAppSteadyAssService;
import com.njcn.cloud.service.IAppSteadyUrlService;
import com.njcn.cloud.service.MsgService;
import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.po.TopMsgPO;

View File

@@ -3,7 +3,7 @@ package com.njcn.cloud.controller.user;
import cn.hutool.core.util.StrUtil;
import com.njcn.cloud.enums.app.UserCodeEnum;
import com.njcn.cloud.pojo.vo.UserVO;
import com.njcn.cloud.service.user.IAppUserService;
import com.njcn.cloud.service.IAppUserService;
import com.njcn.cloud.utils.AESUtil;
import com.njcn.cloud.utils.RedisDB;
import com.njcn.common.pojo.response.HttpResult;

View File

@@ -0,0 +1,16 @@
package com.njcn.cloud.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.cloud.pojo.dto.AppStatistics;
/**
* <p>
* 统计消息 Mapper 接口
* </p>
*
* @author wr
* @since 2024-01-03
*/
public interface AppStatisticsMapper extends BaseMapper<AppStatistics> {
}

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.cloud.mapper.AppStatisticsMapper">
</mapper>

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.user;
package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.user;
package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.cloud.pojo.dto.AppEventInfo;

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.user;
package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.user;
package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.service.IService;

View File

@@ -0,0 +1,65 @@
package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.cloud.pojo.dto.AppEventInfo;
import com.njcn.cloud.pojo.dto.AppReport;
import com.njcn.cloud.pojo.param.AppReportParam;
import com.njcn.cloud.pojo.vo.ReportVO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
/**
* <p>
* 报告信息 服务类
* </p>
*
* @author wr
* @since 2023-11-02
*/
public interface IAppReportService extends IService<AppReport> {
/**
* @param userId
* @param eventDetailIndex
* @Description: 报告申请
* @return: int
* @Author: wr
* @Date: 2023/11/2 14:38
*/
String eventDetailReportApply(String userId, String eventDetailIndex) throws Exception;
/**
* @param userId
* @param eventDetailIndex
* @Description: 报告下载入口
* @return: com.njcn.cloud.pojo.dto.AppEventInfo
* @Author: wr
* @Date: 2023/11/3 8:53
*/
AppEventInfo getDownLoadPath(String userId, String eventDetailIndex);
/**
* @param param
* @Description: 获取报告列表
* @return: com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.njcn.cloud.pojo.vo.ReportVO>
* @Author: wr
* @Date: 2023/12/21 15:34
*/
Page<ReportVO> reportList(AppReportParam param);
/**
* @param param
* @Description: 生成自定义报告
* @return: int
* @Author: wr
* @Date: 2023/12/22 11:08
*/
int customReport(AppReportParam param);
}

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.user;
package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.cloud.pojo.dto.AppSendMsg;

View File

@@ -0,0 +1,23 @@
package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.cloud.pojo.dto.AppStatistics;
import com.njcn.cloud.pojo.vo.StatisticsData;
import com.njcn.cloud.pojo.vo.StatisticsDetail;
import java.util.List;
/**
* <p>
* 统计消息 服务类
* </p>
*
* @author wr
* @since 2024-01-03
*/
public interface IAppStatisticsService extends IService<AppStatistics> {
List<StatisticsData> queryData(String lineIndex, String startTime, String endTime, int page, int num);
StatisticsDetail queryDetail(String lineIndex, String timeID);
}

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.user;
package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.cloud.pojo.dto.AppSteadyAss;

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.user;
package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.cloud.pojo.dto.AppSteadyMsg;

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.user;
package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.cloud.pojo.dto.AppSteadyUrl;

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.user;
package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.service.IService;

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.user;
package com.njcn.cloud.service;
import com.njcn.device.pq.pojo.vo.LineDetailVO;

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.impl.user;
package com.njcn.cloud.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
@@ -12,9 +12,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.cloud.pojo.dto.AppDevMsg;
import com.njcn.cloud.pojo.vo.DevComTJ;
import com.njcn.cloud.pojo.vo.DevMsgDetailInfo;
import com.njcn.cloud.service.user.IAppDevMsgService;
import com.njcn.cloud.service.IAppDevMsgService;
import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.po.TopMsgPO;
import com.njcn.device.pq.pojo.vo.DevDetail;

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.impl.user;
package com.njcn.cloud.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
@@ -10,7 +10,7 @@ import com.njcn.cloud.pojo.dto.AppEventInfo;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.cloud.pojo.vo.EventEigDetailVO;
import com.njcn.cloud.pojo.vo.EventWaveDetailVO;
import com.njcn.cloud.service.user.IAppEventInfoService;
import com.njcn.cloud.service.IAppEventInfoService;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.utils.PubUtils;
import com.njcn.device.pq.api.LineFeignClient;

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.impl.user;
package com.njcn.cloud.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
@@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.cloud.pojo.dto.AppEventMsg;
import com.njcn.cloud.pojo.vo.EventInfoDetailVO;
import com.njcn.cloud.pojo.vo.EventMsgDetailVO;
import com.njcn.cloud.service.user.IAppEventMsgService;
import com.njcn.cloud.service.IAppEventMsgService;
import com.njcn.cloud.utils.PubUtil;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.vo.LineDetailVO;

View File

@@ -1,9 +1,9 @@
package com.njcn.cloud.service.impl.user;
package com.njcn.cloud.service.impl;
import com.njcn.cloud.mapper.AppInfoSetMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.cloud.pojo.dto.AppInfoSet;
import com.njcn.cloud.service.user.IAppInfoSetService;
import com.njcn.cloud.service.IAppInfoSetService;
import org.springframework.stereotype.Service;
/**

View File

@@ -0,0 +1,468 @@
package com.njcn.cloud.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.cloud.enums.app.EventMsgCodeEnum;
import com.njcn.cloud.enums.app.RateCodeEnum;
import com.njcn.cloud.mapper.AppReportMapper;
import com.njcn.cloud.pojo.dto.AppEventInfo;
import com.njcn.cloud.pojo.dto.AppReport;
import com.njcn.cloud.pojo.param.AppReportParam;
import com.njcn.cloud.pojo.vo.EventEigDetailVO;
import com.njcn.cloud.pojo.vo.EventInfoDetailVO;
import com.njcn.cloud.pojo.vo.ReportVO;
import com.njcn.cloud.service.IAppEventInfoService;
import com.njcn.cloud.service.IAppReportService;
import com.njcn.cloud.utils.PubUtil;
import com.njcn.cloud.utils.WordUtil;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.utils.FileUtil;
import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.vo.LineDetailVO;
import com.njcn.event.api.EventDetailFeignClient;
import com.njcn.event.api.ReportFeignClient;
import com.njcn.event.file.component.WavePicComponent;
import com.njcn.event.file.pojo.bo.WaveDataDetail;
import com.njcn.event.file.pojo.dto.WaveDataDTO;
import com.njcn.event.file.utils.WaveUtil;
import com.njcn.event.pojo.param.EventCountParam;
import com.njcn.event.pojo.po.RmpEventDetailPO;
import com.njcn.harmonic.api.HarmDataFeignClient;
import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.system.pojo.enums.StatisticsEnum;
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.User;
import java.io.*;
import java.lang.reflect.Field;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* <p>
* 报告信息 服务实现类
* </p>
*
* @author wr
* @since 2023-11-02
*/
@Service
@RequiredArgsConstructor
public class AppReportServiceImpl extends ServiceImpl<AppReportMapper, AppReport> implements IAppReportService {
private final IAppEventInfoService appEventInfoService;
private final WavePicComponent wavePicComponent;
private final FileStorageUtil fileStorageUtil;
private final EventDetailFeignClient eventDetailFeignClient;
private final LineFeignClient lineFeignClient;
private final UserFeignClient userFeignClient;
private final GeneralDeviceInfoClient generalDeviceInfoClient;
private final HarmDataFeignClient harmDataFeignClient;
private final DeptFeignClient deptFeignClient;
private final ReportFeignClient reportFeignClient;
@Override
@Transactional(rollbackFor = {Exception.class})
public String eventDetailReportApply(String userId, String eventDetailIndex) {
AppEventInfo info = new AppEventInfo();
info.setEventdetailIndex(eventDetailIndex);
info.setEvaluate(0);
info.setUserIndex(userId);
info.setUpdateTime(LocalDateTime.now());
AppEventInfo one = appEventInfoService.getOne(new LambdaUpdateWrapper<AppEventInfo>()
.eq(AppEventInfo::getEventdetailIndex, eventDetailIndex)
.ne(AppEventInfo::getReportState, 4)
);
if (ObjectUtil.isNull(one) || one.getReportState() != 1) {
try {
Map<String, String> map = this.createEventDetailReport(eventDetailIndex, one);
if (map.containsKey("noData")) {
return map.get("noData");
}
info.setInstantwavePath(map.get("instantPath"));
info.setRmswavePath(map.get("rmsPath"));
info.setReportState(1);
info.setReportPath(map.get("reportPath"));
appEventInfoService.saveOrUpdate(info);
return "0";
} catch (Exception e) {
e.printStackTrace();
info.setReportState(2);
appEventInfoService.saveOrUpdate(info);
return "1";
}
}
return "0";
}
@Override
public AppEventInfo getDownLoadPath(String userId, String eventDetailIndex) {
AppEventInfo one = appEventInfoService.getOne(new LambdaQueryWrapper<AppEventInfo>()
.eq(AppEventInfo::getUserIndex, userId)
.eq(AppEventInfo::getEventdetailIndex, eventDetailIndex)
);
if (ObjectUtil.isNull(one)) {
throw new BusinessException(EventMsgCodeEnum.EVENTDETAILREPORTDOWNLOAD_NOT_FAIL.getMsg());
}
if (one.getReportState() == 3) {
throw new BusinessException(EventMsgCodeEnum.EVENTDETAILREPORTDOWNLOAD_ERROR.getMsg());
}
return one;
}
@Override
public Page<ReportVO> reportList(AppReportParam param) {
Page<ReportVO> page = new Page<>();
List<ReportVO> info = new ArrayList<>();
//先获取用户部门,在根据部门信息获取监测点信息
List<User> users = userFeignClient.getUserByIdList(Collections.singletonList(param.getUserId())).getData();
if (CollUtil.isNotEmpty(users)) {
User user = users.get(0);
//获取所有监测点id
List<String> lineIds = generalDeviceInfoClient.deptGetRunLine(user.getDeptId()).getData();
Page<AppReport> page1 = this.page(new Page<>(param.getPage(), param.getNum()), new LambdaQueryWrapper<AppReport>()
.in(param.getSystemType() == 2, AppReport::getLineIndex, lineIds)
.eq(param.getSystemType() == 1, AppReport::getDeptsIndex, user.getDeptId())
.eq(param.getSystemType() != null, AppReport::getSystemType, param.getSystemType())
.eq(param.getReportType() != null, AppReport::getReportType, param.getReportType())
.ne(AppReport::getState, 4)
.eq(AppReport::getUserIndex, param.getUserId())
.ge(StrUtil.isNotBlank(param.getStartTime()), AppReport::getStartTime, DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())))
.le(StrUtil.isNotBlank(param.getEndTime()), AppReport::getStartTime, DateUtil.endOfDay(DateUtil.parse(param.getEndTime())))
.orderByDesc(AppReport::getUpdateTime)
);
//数据组装
BeanUtil.copyProperties(page1, page);
List<AppReport> records = page1.getRecords();
if (EventMsgCodeEnum.STEADY_TYPE.getCode() == param.getSystemType()) {
if (CollUtil.isNotEmpty(records)) {
rateAdd(param, info, records);
}
}
if (EventMsgCodeEnum.TRANSIENT_TYPE.getCode() == param.getSystemType()) {
if (CollUtil.isNotEmpty(records)) {
Dept dept = deptFeignClient.getDeptById(user.getDeptId()).getData();
//获取分页报告监测点id
EventCountParam lineParam;
ReportVO vo;
for (AppReport record : records) {
lineParam = new EventCountParam();
lineParam.setIds(lineIds);
lineParam.setStartTime(LocalDateTimeUtil.format(record.getStartTime(), DatePattern.NORM_DATETIME_PATTERN));
lineParam.setEndTime(LocalDateTimeUtil.format(record.getEndTime(), DatePattern.NORM_DATETIME_PATTERN));
Integer count = eventDetailFeignClient.getEventDetailByLineCount(lineParam).getData();
vo = BeanUtil.copyProperties(record, ReportVO.class);
vo.setTotal(count);
vo.setListResult(new ArrayList<String>() {{
add("共发生" + count + "次暂降事件");
}});
vo.setName(dept.getName() + "报告");
info.add(vo);
}
}
}
}
page.setRecords(info);
return page;
}
@Override
public int customReport(AppReportParam param) {
//查询报告是否存在
LambdaQueryWrapper<AppReport> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(AppReport::getStartTime, param.getStartTime());
lambdaQueryWrapper.eq(AppReport::getEndTime, param.getEndTime());
lambdaQueryWrapper.eq(AppReport::getReportType, param.getReportType());
String name = getFileName(param.getLineIndex(), param.getStartTime(), param.getEndTime());
String deptId = "";
if (param.getSystemType() == 1) {
List<User> users = userFeignClient.getUserByIdList(Collections.singletonList(param.getUserId())).getData();
deptId = users.get(0).getDeptId();
lambdaQueryWrapper.eq(AppReport::getDeptsIndex, deptId);
name = getFileName(param.getUserId(), param.getStartTime(), param.getEndTime());
}
AppReport reportData = this.getOne(lambdaQueryWrapper);
String path = createReport(deptId, param.getSystemType(), param.getLineIndex(), param.getStartTime(), param.getEndTime());
// String path = "";
if (reportData == null) {
String userId = param.getReportType() == 5 ? param.getUserId() : "";
AppReport appReport = new AppReport();
appReport.setReportName(name);
appReport.setLineIndex(param.getLineIndex());
appReport.setUserIndex(userId);
appReport.setUpdateTime(LocalDateTime.now());
appReport.setStartTime(LocalDateTimeUtil.parse(param.getStartTime(), DatePattern.NORM_DATETIME_PATTERN));
appReport.setEndTime(LocalDateTimeUtil.parse(param.getEndTime(), DatePattern.NORM_DATETIME_PATTERN));
appReport.setSystemType(param.getSystemType());
appReport.setReportType(param.getReportType());
appReport.setReportPath(path);
appReport.setDeptsIndex(deptId);
if (StrUtil.isBlank(path)) {
appReport.setState(2);
appReport.setErrorCount(1);
} else {
appReport.setState(param.getReportType() == 5 ? 3 : 1);
appReport.setErrorCount(0);
}
this.save(appReport);
} else if (reportData.getState() == 2) {
if (reportData.getErrorCount() < 2) {
if (reportData.getUserIndex().equals(param.getUserId())) {
if (path.equals("")) {
this.update(new LambdaUpdateWrapper<AppReport>()
.set(AppReport::getUpdateTime, LocalDateTime.now())
.set(AppReport::getErrorCount, reportData.getErrorCount() + 1)
.set(AppReport::getState, reportData.getState())
.eq(AppReport::getReportIndex, reportData.getReportIndex())
);
} else {
this.update(new LambdaUpdateWrapper<AppReport>()
.set(AppReport::getUpdateTime, LocalDateTime.now())
.set(AppReport::getErrorCount, 0)
.set(AppReport::getState, param.getReportType() == 5 ? 3 : 1)
.set(AppReport::getReportPath, path)
.eq(AppReport::getReportIndex, reportData.getReportIndex())
);
}
} else {
String userId = param.getReportType() == 5 ? param.getUserId() : "";
AppReport appReport = new AppReport();
appReport.setReportName(name);
appReport.setLineIndex(param.getLineIndex());
appReport.setUserIndex(userId);
appReport.setUpdateTime(LocalDateTime.now());
appReport.setStartTime(LocalDateTimeUtil.parse(param.getStartTime(), DatePattern.NORM_DATETIME_PATTERN));
appReport.setEndTime(LocalDateTimeUtil.parse(param.getEndTime(), DatePattern.NORM_DATETIME_PATTERN));
appReport.setSystemType(param.getSystemType());
appReport.setReportType(param.getReportType());
appReport.setReportPath(path);
appReport.setDeptsIndex(deptId);
if (StrUtil.isBlank(path)) {
appReport.setState(2);
appReport.setErrorCount(1);
} else {
appReport.setState(param.getReportType() == 5 ? 3 : 1);
appReport.setErrorCount(0);
}
this.save(appReport);
}
}
}
return 0;
}
/**
* @param deptId 部门id
* @param type 区分是稳态还暂态
* @param lineId 监测点ia
* @param startTime 开始时间
* @param endTime 结束时间
* @return
*/
private String createReport(String deptId, Integer type, String lineId, String startTime, String endTime) {
//稳态系统
if (type == 2) {
}
//暂态系统(周报)
if (type == 1) {
DeviceInfoParam.BusinessParam param = new DeviceInfoParam.BusinessParam();
param.setDeptIndex(deptId);
param.setSearchBeginTime(startTime.substring(0,10));
param.setSearchEndTime(endTime.substring(0,10));
param.setServerName("event-boot");
//统计类型
SimpleDTO simpleDTO = new SimpleDTO();
simpleDTO.setCode(String.valueOf(StatisticsEnum.POWER_NETWORK));
param.setStatisticalType(simpleDTO);
return reportFeignClient.appEventExport(param).getData();
}
return "";
}
private String getFileName(String lineId, String startTime, String endTime) {
String start = startTime.substring(0, 10);
String end = endTime.substring(0, 10);
return lineId + "_" + start + "_" + end + ".xlsx";
}
/**
* 谐波数据组装
*
* @param param
* @param info
* @param records
*/
private void rateAdd(AppReportParam param, List<ReportVO> info, List<AppReport> records) {
//获取分页报告监测点id
List<String> lineReportIds = records.stream().map(AppReport::getLineIndex).distinct().collect(Collectors.toList());
StatSubstationBizBaseParam rateLine = new StatSubstationBizBaseParam();
rateLine.setIds(lineReportIds);
rateLine.setStartTime(param.getStartTime());
rateLine.setEndTime(param.getEndTime());
//获取越线信息
List<RStatLimitRateDPO> limitRates = harmDataFeignClient.getLinesRate(rateLine).getData();
Map<String, RStatLimitRateDPO> limitRateMap = limitRates.stream()
.collect(Collectors.toMap(RStatLimitRateDPO::getLineId, Function.identity()));
//获取监测点信息
List<LineDetailVO.Detail> lineDetails = lineFeignClient.getLineDetailByIds(lineReportIds).getData();
Map<String, LineDetailVO.Detail> lineDetailMap = lineDetails.stream()
.collect(Collectors.toMap(LineDetailVO.Detail::getLineId, Function.identity()));
ReportVO vo;
List<String> listResult;
for (AppReport record : records) {
vo = BeanUtil.copyProperties(record, ReportVO.class);
if (lineDetailMap.containsKey(record.getLineIndex())) {
vo.setName(lineDetailMap.get(record.getLineIndex()).getLineName());
vo.setTinterval(lineDetailMap.get(record.getLineIndex()).getTimeInterval());
}
listResult = new ArrayList<>();
if (limitRateMap.containsKey(record.getLineIndex())) {
RStatLimitRateDPO rStatLimitRateDPO = limitRateMap.get(record.getLineIndex());
vo.setListResult(RateList(listResult, rStatLimitRateDPO, vo.getTinterval()));
} else {
listResult.add("该监测点暂无指标越限");
vo.setListResult(listResult);
}
info.add(vo);
}
}
private List<String> RateList(List<String> info, RStatLimitRateDPO rateDPO, Integer timeInterval) {
//反射获取所有属性
Field[] declaredFields = rateDPO.getClass().getDeclaredFields();
String s;
for (Field item : declaredFields) {
item.setAccessible(true);
String name = item.getName(); // 获取对象属性名
try {
String codeByMsg = RateCodeEnum.getMsgByCode(name);
if (StrUtil.isNotBlank(codeByMsg)) {
Integer o = Integer.valueOf(item.get(rateDPO).toString());
if (codeByMsg.equals("闪变越限")) {
s = codeByMsg + o * 120 + "分钟";
info.add(s);
} else {
s = codeByMsg + o * timeInterval + "分钟";
info.add(s);
}
}
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
return info;
}
/**
* @param eventIndex
* @Description: 生成报告
* @return: java.lang.String
* @Author: wr
* @Date: 2023/11/2 14:44
*/
private Map<String, String> createEventDetailReport(String eventIndex, AppEventInfo appEventInfo) throws Exception {
Map<String, String> map = new HashMap<>();
WaveDataDTO waveData = appEventInfoService.analyseWave(eventIndex, 2);
if (waveData.getListWaveData().size() == 0) {
map.put("noData", "2");
return map;
}
//数据筛选,如果是双路电压的话会存在2个波形数据
List<WaveDataDetail> waveDataDetails = WaveUtil.filterWaveData(waveData);
WordUtil wordUtil = new WordUtil();
//获取瞬时波形
String instantPath;
if (ObjectUtil.isNotNull(appEventInfo) && StrUtil.isNotBlank(appEventInfo.getInstantwavePath())) {
instantPath = appEventInfo.getInstantwavePath();
} else {
instantPath = wavePicComponent.generateImageShun(waveData, waveDataDetails);
}
InputStream instantStream = fileStorageUtil.getFileStream(instantPath);
String imageShun64 = Base64.encode(instantStream);
//获取rms波形
String rmsPath;
if (ObjectUtil.isNotNull(appEventInfo) && StrUtil.isNotBlank(appEventInfo.getRmswavePath())) {
rmsPath = appEventInfo.getRmswavePath();
} else {
rmsPath = wavePicComponent.generateImageRms(waveData, waveDataDetails);
}
InputStream rmsStream = fileStorageUtil.getFileStream(rmsPath);
String rmsShun64 = Base64.encode(rmsStream);
wordUtil.translate(imageShun64, rmsShun64);
List<EventEigDetailVO> eventDetailEigenvalue = new ArrayList<>();
List<String> tmpWaveTitle = waveData.getWaveTitle();
int picCounts = (tmpWaveTitle.size() - 1) / waveData.getIPhasic();
if (picCounts == 3) {
eventDetailEigenvalue = appEventInfoService.eventDetailEigenvalue(eventIndex).getList();
}
wordUtil.setEventDetailEigenvalue(eventDetailEigenvalue);
EventInfoDetailVO eventInfoList = new EventInfoDetailVO();
List<RmpEventDetailPO> eventDetails = eventDetailFeignClient.getEventDetailByIdsList(Arrays.asList(eventIndex)).getData();
List<String> linedIds = eventDetails.stream().map(RmpEventDetailPO::getLineId).distinct().collect(Collectors.toList());
List<LineDetailVO.Detail> lineDetail = lineFeignClient.getLineDetailByIds(linedIds).getData();
RmpEventDetailPO detail = eventDetails.get(0);
LineDetailVO.Detail line = lineDetail.get(0);
eventInfoList.setLineName(PubUtil.lineName(detail.getSagsource(), line.getLineName()));
eventInfoList.setGdName(line.getGdName());
eventInfoList.setBdzName(line.getSubName());
eventInfoList.setDevName(line.getDevName());
eventInfoList.setScale(line.getVoltageLevel());
eventInfoList.setIp(line.getIp());
eventInfoList.setEventDetailIndex(detail.getEventId());
eventInfoList.setTimeID(detail.getStartTime());
eventInfoList.setPersistTime(detail.getDuration());
eventInfoList.setMs(detail.getFirstMs());
eventInfoList.setEventValue(detail.getFeatureAmplitude());
wordUtil.setEventInfoList(eventInfoList);
wordUtil.createReport();
//临时缓冲区
ByteArrayOutputStream out = new ByteArrayOutputStream();
//创建临时文件
wordUtil.getDocument().write(out);
byte[] bookByteAry = out.toByteArray();
InputStream in = new ByteArrayInputStream(bookByteAry);
String reportPath = fileStorageUtil.uploadStream(in, OssPath.RESPONSIBILITY_APP_REPORT,
FileUtil.generateFileName("docx")
);
map.put("instantPath", instantPath);
map.put("rmsPath", rmsPath);
map.put("reportPath", reportPath);
return map;
}
}

View File

@@ -1,9 +1,9 @@
package com.njcn.cloud.service.impl.user;
package com.njcn.cloud.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.cloud.mapper.AppSendMsgMapper;
import com.njcn.cloud.pojo.dto.AppSendMsg;
import com.njcn.cloud.service.user.IAppSendMsgService;
import com.njcn.cloud.service.IAppSendMsgService;
import org.springframework.stereotype.Service;
/**

View File

@@ -0,0 +1,33 @@
package com.njcn.cloud.service.impl;
import com.njcn.cloud.mapper.AppStatisticsMapper;
import com.njcn.cloud.pojo.dto.AppStatistics;
import com.njcn.cloud.pojo.vo.StatisticsData;
import com.njcn.cloud.pojo.vo.StatisticsDetail;
import com.njcn.cloud.service.IAppStatisticsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 统计消息 服务实现类
* </p>
*
* @author wr
* @since 2024-01-03
*/
@Service
public class AppStatisticsServiceImpl extends ServiceImpl<AppStatisticsMapper, AppStatistics> implements IAppStatisticsService {
@Override
public List<StatisticsData> queryData(String lineIndex, String startTime, String endTime, int page, int num) {
return null;
}
@Override
public StatisticsDetail queryDetail(String lineIndex, String timeID) {
return null;
}
}

View File

@@ -1,9 +1,9 @@
package com.njcn.cloud.service.impl.user;
package com.njcn.cloud.service.impl;
import com.njcn.cloud.mapper.AppSteadyAssMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.cloud.pojo.dto.AppSteadyAss;
import com.njcn.cloud.service.user.IAppSteadyAssService;
import com.njcn.cloud.service.IAppSteadyAssService;
import org.springframework.stereotype.Service;
/**

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.impl.user;
package com.njcn.cloud.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
@@ -19,9 +19,9 @@ import com.njcn.cloud.pojo.vo.AppSteadyMsgVO;
import com.njcn.cloud.pojo.vo.SteadyMsgDetailVO;
import com.njcn.cloud.pojo.vo.SteadyTargetVO;
import com.njcn.cloud.pojo.vo.SteadyUrlData;
import com.njcn.cloud.service.user.IAppSteadyAssService;
import com.njcn.cloud.service.user.IAppSteadyMsgService;
import com.njcn.cloud.service.user.IAppSteadyUrlService;
import com.njcn.cloud.service.IAppSteadyAssService;
import com.njcn.cloud.service.IAppSteadyMsgService;
import com.njcn.cloud.service.IAppSteadyUrlService;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.pq.api.LineFeignClient;

View File

@@ -1,9 +1,9 @@
package com.njcn.cloud.service.impl.user;
package com.njcn.cloud.service.impl;
import com.njcn.cloud.mapper.AppSteadyUrlMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.cloud.pojo.dto.AppSteadyUrl;
import com.njcn.cloud.service.user.IAppSteadyUrlService;
import com.njcn.cloud.service.IAppSteadyUrlService;
import org.springframework.stereotype.Service;
/**

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.impl.user;
package com.njcn.cloud.service.impl;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.cloud.mapper.AppUserMapper;
import com.njcn.cloud.enums.app.UserCodeEnum;
import com.njcn.cloud.pojo.dto.AppSendMsg;
import com.njcn.cloud.service.user.IAppSendMsgService;
import com.njcn.cloud.service.user.IAppUserService;
import com.njcn.cloud.service.IAppSendMsgService;
import com.njcn.cloud.service.IAppUserService;
import com.njcn.cloud.utils.SmsUtil;
import com.njcn.common.pojo.constant.PatternRegex;
import com.njcn.common.pojo.exception.BusinessException;

View File

@@ -1,4 +1,4 @@
package com.njcn.cloud.service.impl.user;
package com.njcn.cloud.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
@@ -10,7 +10,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.cloud.enums.app.UserCodeEnum;
import com.njcn.cloud.pojo.dto.*;
import com.njcn.cloud.service.user.*;
import com.njcn.cloud.service.*;
import com.njcn.cloud.utils.RedisDB;
import com.njcn.cloud.utils.SmsUtil;
import com.njcn.common.pojo.dto.LogInfoDTO;

View File

@@ -1,6 +1,6 @@
package com.njcn.cloud.service.impl.user;
package com.njcn.cloud.service.impl;
import com.njcn.cloud.service.user.RealTimeInfoService;
import com.njcn.cloud.service.RealTimeInfoService;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.vo.LineDetailVO;
import lombok.RequiredArgsConstructor;

View File

@@ -1,190 +0,0 @@
package com.njcn.cloud.service.impl.user;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.njcn.cloud.enums.app.EventMsgCodeEnum;
import com.njcn.cloud.mapper.AppReportMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.cloud.pojo.dto.AppEventInfo;
import com.njcn.cloud.pojo.dto.AppReport;
import com.njcn.cloud.pojo.vo.EventEigDetailVO;
import com.njcn.cloud.pojo.vo.EventInfoDetailVO;
import com.njcn.cloud.service.user.IAppEventInfoService;
import com.njcn.cloud.service.user.IAppReportService;
import com.njcn.cloud.utils.PubUtil;
import com.njcn.cloud.utils.WordUtil;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.utils.FileUtil;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.vo.LineDetailVO;
import com.njcn.event.api.EventDetailFeignClient;
import com.njcn.event.file.component.WavePicComponent;
import com.njcn.event.file.pojo.bo.WaveDataDetail;
import com.njcn.event.file.pojo.dto.WaveDataDTO;
import com.njcn.event.file.utils.WaveUtil;
import com.njcn.event.pojo.po.RmpEventDetailPO;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.*;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 报告信息 服务实现类
* </p>
*
* @author wr
* @since 2023-11-02
*/
@Service
@RequiredArgsConstructor
public class AppReportServiceImpl extends ServiceImpl<AppReportMapper, AppReport> implements IAppReportService {
private final IAppEventInfoService appEventInfoService;
private final WavePicComponent wavePicComponent;
private final FileStorageUtil fileStorageUtil;
private final EventDetailFeignClient eventDetailFeignClient;
private final LineFeignClient lineFeignClient;
@Override
@Transactional(rollbackFor = {Exception.class})
public String eventDetailReportApply(String userId, String eventDetailIndex) {
AppEventInfo info=new AppEventInfo();
info.setEventdetailIndex(eventDetailIndex);
info.setEvaluate(0);
info.setUserIndex(userId);
info.setUpdateTime(LocalDateTime.now());
AppEventInfo one = appEventInfoService.getOne(new LambdaUpdateWrapper<AppEventInfo>()
.eq(AppEventInfo::getEventdetailIndex, eventDetailIndex)
.ne(AppEventInfo::getReportState, 4)
);
if (ObjectUtil.isNull(one)||one.getReportState() != 1) {
try {
Map<String, String> map = this.createEventDetailReport(eventDetailIndex,one);
if (map.containsKey("noData")) {
return map.get("noData");
}
info.setInstantwavePath(map.get("instantPath"));
info.setRmswavePath(map.get("rmsPath"));
info.setReportState(1);
info.setReportPath(map.get("reportPath"));
appEventInfoService.saveOrUpdate(info);
return "0";
} catch (Exception e) {
e.printStackTrace();
info.setReportState(2);
appEventInfoService.saveOrUpdate(info);
return "1";
}
}
return "0";
}
@Override
public AppEventInfo getDownLoadPath(String userId, String eventDetailIndex) {
AppEventInfo one = appEventInfoService.getOne(new LambdaQueryWrapper<AppEventInfo>()
.eq(AppEventInfo::getUserIndex, userId)
.eq(AppEventInfo::getEventdetailIndex, eventDetailIndex)
);
if(ObjectUtil.isNull(one)){
throw new BusinessException(EventMsgCodeEnum.EVENTDETAILREPORTDOWNLOAD_NOT_FAIL.getMsg());
}
if(one.getReportState() == 3){
throw new BusinessException(EventMsgCodeEnum.EVENTDETAILREPORTDOWNLOAD_ERROR.getMsg());
}
return one;
}
/**
* @Description: 生成报告
* @param eventIndex
* @return: java.lang.String
* @Author: wr
* @Date: 2023/11/2 14:44
*/
private Map<String,String> createEventDetailReport(String eventIndex,AppEventInfo appEventInfo) throws Exception {
Map<String,String> map=new HashMap<>();
WaveDataDTO waveData = appEventInfoService.analyseWave(eventIndex, 2);
if (waveData.getListWaveData().size() == 0) {
map.put("noData","2");
return map;
}
//数据筛选,如果是双路电压的话会存在2个波形数据
List<WaveDataDetail> waveDataDetails = WaveUtil.filterWaveData(waveData);
WordUtil wordUtil = new WordUtil();
//获取瞬时波形
String instantPath;
if(ObjectUtil.isNotNull(appEventInfo)&&StrUtil.isNotBlank(appEventInfo.getInstantwavePath())){
instantPath=appEventInfo.getInstantwavePath();
}else{
instantPath = wavePicComponent.generateImageShun(waveData,waveDataDetails);
}
InputStream instantStream = fileStorageUtil.getFileStream(instantPath);
String imageShun64 = Base64.encode(instantStream);
//获取rms波形
String rmsPath;
if(ObjectUtil.isNotNull(appEventInfo)&&StrUtil.isNotBlank(appEventInfo.getRmswavePath())){
rmsPath =appEventInfo.getRmswavePath();
}else{
rmsPath = wavePicComponent.generateImageRms(waveData,waveDataDetails);
}
InputStream rmsStream = fileStorageUtil.getFileStream(rmsPath);
String rmsShun64 = Base64.encode(rmsStream);
wordUtil.translate(imageShun64,rmsShun64);
List<EventEigDetailVO> eventDetailEigenvalue =new ArrayList<>();
List<String> tmpWaveTitle = waveData.getWaveTitle();
int picCounts =(tmpWaveTitle.size()-1)/waveData.getIPhasic();
if(picCounts == 3){
eventDetailEigenvalue = appEventInfoService.eventDetailEigenvalue(eventIndex).getList();
}
wordUtil.setEventDetailEigenvalue(eventDetailEigenvalue);
EventInfoDetailVO eventInfoList = new EventInfoDetailVO();
List<RmpEventDetailPO> eventDetails = eventDetailFeignClient.getEventDetailByIdsList(Arrays.asList(eventIndex)).getData();
List<String> linedIds = eventDetails.stream().map(RmpEventDetailPO::getLineId).distinct().collect(Collectors.toList());
List<LineDetailVO.Detail> lineDetail = lineFeignClient.getLineDetailByIds(linedIds).getData();
RmpEventDetailPO detail = eventDetails.get(0);
LineDetailVO.Detail line = lineDetail.get(0);
eventInfoList.setLineName(PubUtil.lineName(detail.getSagsource(),line.getLineName()));
eventInfoList.setGdName(line.getGdName());
eventInfoList.setBdzName(line.getSubName());
eventInfoList.setDevName(line.getDevName());
eventInfoList.setScale(line.getVoltageLevel());
eventInfoList.setIp(line.getIp());
eventInfoList.setEventDetailIndex(detail.getEventId());
eventInfoList.setTimeID(detail.getStartTime());
eventInfoList.setPersistTime(detail.getDuration());
eventInfoList.setMs(detail.getFirstMs());
eventInfoList.setEventValue(detail.getFeatureAmplitude());
wordUtil.setEventInfoList(eventInfoList);
wordUtil.createReport();
//临时缓冲区
ByteArrayOutputStream out = new ByteArrayOutputStream();
//创建临时文件
wordUtil.getDocument().write(out);
byte[] bookByteAry = out.toByteArray();
InputStream in = new ByteArrayInputStream(bookByteAry);
String reportPath = fileStorageUtil.uploadStream(in, OssPath.RESPONSIBILITY_APP_REPORT,
FileUtil.generateFileName("docx")
);
map.put("instantPath",instantPath);
map.put("rmsPath",rmsPath);
map.put("reportPath",reportPath);
return map;
}
}

View File

@@ -1,37 +0,0 @@
package com.njcn.cloud.service.user;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.cloud.pojo.dto.AppEventInfo;
import com.njcn.cloud.pojo.dto.AppReport;
/**
* <p>
* 报告信息 服务类
* </p>
*
* @author wr
* @since 2023-11-02
*/
public interface IAppReportService extends IService<AppReport> {
/**
* @Description: 报告申请
* @param userId
* @param eventDetailIndex
* @return: int
* @Author: wr
* @Date: 2023/11/2 14:38
*/
String eventDetailReportApply(String userId, String eventDetailIndex) throws Exception;
/**
* @Description: 报告下载入口
* @param userId
* @param eventDetailIndex
* @return: com.njcn.cloud.pojo.dto.AppEventInfo
* @Author: wr
* @Date: 2023/11/3 8:53
*/
AppEventInfo getDownLoadPath(String userId, String eventDetailIndex);
}