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

@@ -0,0 +1,108 @@
package com.njcn.cloud.enums.app;
/**
* @Description: 指标编码
* @Author: wr
* @Date: 2023/11/3 13:57
*/
public enum RateCodeEnum{
FLICKET_ALLTIME("flickerAllTime", "Flicket_AllTime"),
FREQ_DEV_OVERTIME("freqDevOvertime", "频率偏差越限"),
VOLTAGE_DEV_OVERTIME("voltageDevOvertime", "电压偏差越限"),
UBALANCE_OVERTIME("ubalanceOvertime" ,"电压不平衡越限"),
FLICKER_OVERTIME("flickerOvertime", "闪变越限"),
UABERRANCE_OVERTIME("uaberranceOvertime", "电压谐波畸变率越限"),
UHARM_2_OVERTIME("uharm2Overtime", "2次电压谐波含有率越限"),
UHARM_3_OVERTIME("uharm3Overtime", "3次电压谐波含有率越限"),
UHARM_4_OVERTIME("uharm4Overtime", "4次电压谐波含有率越限"),
UHARM_5_OVERTIME("uharm5Overtime", "5次电压谐波含有率越限"),
UHARM_6_OVERTIME("uharm6Overtime", "6次电压谐波含有率越限"),
UHARM_7_OVERTIME("uharm7Overtime", "7次电压谐波含有率越限"),
UHARM_8_OVERTIME("uharm8Overtime", "8次电压谐波含有率越限"),
UHARM_9_OVERTIME("uharm9Overtime", "9次电压谐波含有率越限"),
UHARM_10_OVERTIME("uharm10Overtime", "10次电压谐波含有率越限"),
UHARM_11_OVERTIME("uharm11Overtime", "11次电压谐波含有率越限"),
UHARM_12_OVERTIME("uharm12Overtime", "12次电压谐波含有率越限"),
UHARM_13_OVERTIME("uharm13Overtime", "13次电压谐波含有率越限"),
UHARM_14_OVERTIME("uharm14Overtime", "14次电压谐波含有率越限"),
UHARM_15_OVERTIME("uharm15Overtime", "15次电压谐波含有率越限"),
UHARM_16_OVERTIME("uharm16Overtime", "16次电压谐波含有率越限"),
UHARM_17_OVERTIME("uharm17Overtime", "17次电压谐波含有率越限"),
UHARM_18_OVERTIME("uharm18Overtime", "18次电压谐波含有率越限"),
UHARM_19_OVERTIME("uharm19Overtime", "19次电压谐波含有率越限"),
UHARM_20_OVERTIME("uharm20Overtime", "20次电压谐波含有率越限"),
UHARM_21_OVERTIME("uharm21Overtime", "21次电压谐波含有率越限"),
UHARM_22_OVERTIME("uharm22Overtime", "22次电压谐波含有率越限"),
UHARM_23_OVERTIME("uharm23Overtime", "23次电压谐波含有率越限"),
UHARM_24_OVERTIME("uharm24Overtime", "24次电压谐波含有率越限"),
UHARM_25_OVERTIME("uharm25Overtime", "25次电压谐波含有率越限"),
IHARM_2_OVERTIME("iharm2Overtime", "2次电流谐波幅值越限"),
IHARM_3_OVERTIME("iharm3Overtime", "3次电流谐波幅值越限"),
IHARM_4_OVERTIME("iharm4Overtime", "4次电流谐波幅值越限"),
IHARM_5_OVERTIME("iharm5Overtime", "5次电流谐波幅值越限"),
IHARM_6_OVERTIME("iharm6Overtime", "6次电流谐波幅值越限"),
IHARM_7_OVERTIME("iharm7Overtime", "7次电流谐波幅值越限"),
IHARM_8_OVERTIME("iharm8Overtime", "8次电流谐波幅值越限"),
IHARM_9_OVERTIME("iharm9Overtime", "9次电流谐波幅值越限"),
IHARM_10_OVERTIME("iharm10Overtime", "10次电流谐波幅值越限"),
IHARM_11_OVERTIME("iharm11Overtime", "11次电流谐波幅值越限"),
IHARM_12_OVERTIME("iharm12Overtime", "12次电流谐波幅值越限"),
IHARM_13_OVERTIME("iharm13Overtime", "13次电流谐波幅值越限"),
IHARM_14_OVERTIME("iharm14Overtime", "14次电流谐波幅值越限"),
IHARM_15_OVERTIME("iharm15Overtime", "15次电流谐波幅值越限"),
IHARM_16_OVERTIME("iharm16Overtime", "16次电流谐波幅值越限"),
IHARM_17_OVERTIME("iharm17Overtime", "17次电流谐波幅值越限"),
IHARM_18_OVERTIME("iharm18Overtime", "18次电流谐波幅值越限"),
IHARM_19_OVERTIME("iharm19Overtime", "19次电流谐波幅值越限"),
IHARM_20_OVERTIME("iharm20Overtime", "20次电流谐波幅值越限"),
IHARM_21_OVERTIME("iharm21Overtime", "21次电流谐波幅值越限"),
IHARM_22_OVERTIME("iharm22Overtime", "22次电流谐波幅值越限"),
IHARM_23_OVERTIME("iharm23Overtime", "23次电流谐波幅值越限"),
IHARM_24_OVERTIME("iharm24Overtime", "24次电流谐波幅值越限"),
IHARM_25_OVERTIME("iharm25Overtime", "25次电流谐波幅值越限");
private String code;
private String type;
RateCodeEnum(String code, String type){
this.code = code;
this.type = type;
}
public String getCode() {
return code;
}
public String getType() {
return type;
}
public void setCode(String code) {
this.code = code;
}
public void setType(String type) {
this.type = type;
}
public static String getMsgByCode(String code){
for (RateCodeEnum typeCodeEnum : RateCodeEnum.values()) {
if (typeCodeEnum.code==code) {
return typeCodeEnum.type;
}
}
return "";
}
public static String getCodeByMsg(String type){
for (RateCodeEnum typeCodeEnum : RateCodeEnum.values()) {
if (typeCodeEnum.type.equals(type)) {
return typeCodeEnum.code;
}
}
return "";
}
}

View File

@@ -0,0 +1,203 @@
package com.njcn.cloud.pojo.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import com.njcn.db.bo.BaseEntity;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 统计消息
* </p>
*
* @author wr
* @since 2024-01-03
*/
@Getter
@Setter
@TableName("app_statistics")
public class AppStatistics extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 监测点id
*/
@MppMultiId("Line_Index")
private String lineIndex;
/**
* 统计时间
*/
@MppMultiId("Time_Id")
private LocalDateTime timeId;
@TableField("Event_Count")
private Boolean eventCount;
@TableField("Freq_Dev_Rate")
private Float freqDevRate;
@TableField("Voltage_Dev_Rate")
private Float voltageDevRate;
@TableField("Ubalance_Rate")
private Float ubalanceRate;
@TableField("FLICKER_Rate")
private Float flickerRate;
@TableField("UABERRANCE_Rate")
private Float uaberranceRate;
@TableField("Uharm_2_Rate")
private Float uharm2Rate;
@TableField("Uharm_3_Rate")
private Float uharm3Rate;
@TableField("Uharm_4_Rate")
private Float uharm4Rate;
@TableField("Uharm_5_Rate")
private Float uharm5Rate;
@TableField("Uharm_6_Rate")
private Float uharm6Rate;
@TableField("Uharm_7_Rate")
private Float uharm7Rate;
@TableField("Uharm_8_Rate")
private Float uharm8Rate;
@TableField("Uharm_9_Rate")
private Float uharm9Rate;
@TableField("Uharm_10_Rate")
private Float uharm10Rate;
@TableField("Uharm_11_Rate")
private Float uharm11Rate;
@TableField("Uharm_12_Rate")
private Float uharm12Rate;
@TableField("Uharm_13_Rate")
private Float uharm13Rate;
@TableField("Uharm_14_Rate")
private Float uharm14Rate;
@TableField("Uharm_15_Rate")
private Float uharm15Rate;
@TableField("Uharm_16_Rate")
private Float uharm16Rate;
@TableField("Uharm_17_Rate")
private Float uharm17Rate;
@TableField("Uharm_18_Rate")
private Float uharm18Rate;
@TableField("Uharm_19_Rate")
private Float uharm19Rate;
@TableField("Uharm_20_Rate")
private Float uharm20Rate;
@TableField("Uharm_21_Rate")
private Float uharm21Rate;
@TableField("Uharm_22_Rate")
private Float uharm22Rate;
@TableField("Uharm_23_Rate")
private Float uharm23Rate;
@TableField("Uharm_24_Rate")
private Float uharm24Rate;
@TableField("Uharm_25_Rate")
private Float uharm25Rate;
@TableField("Iharm_2_Rate")
private Float iharm2Rate;
@TableField("Iharm_3_Rate")
private Float iharm3Rate;
@TableField("Iharm_4_Rate")
private Float iharm4Rate;
@TableField("Iharm_5_Rate")
private Float iharm5Rate;
@TableField("Iharm_6_Rate")
private Float iharm6Rate;
@TableField("Iharm_7_Rate")
private Float iharm7Rate;
@TableField("Iharm_8_Rate")
private Float iharm8Rate;
@TableField("Iharm_9_Rate")
private Float iharm9Rate;
@TableField("Iharm_10_Rate")
private Float iharm10Rate;
@TableField("Iharm_11_Rate")
private Float iharm11Rate;
@TableField("Iharm_12_Rate")
private Float iharm12Rate;
@TableField("Iharm_13_Rate")
private Float iharm13Rate;
@TableField("Iharm_14_Rate")
private Float iharm14Rate;
@TableField("Iharm_15_Rate")
private Float iharm15Rate;
@TableField("Iharm_16_Rate")
private Float iharm16Rate;
@TableField("Iharm_17_Rate")
private Float iharm17Rate;
@TableField("Iharm_18_Rate")
private Float iharm18Rate;
@TableField("Iharm_19_Rate")
private Float iharm19Rate;
@TableField("Iharm_20_Rate")
private Float iharm20Rate;
@TableField("Iharm_21_Rate")
private Float iharm21Rate;
@TableField("Iharm_22_Rate")
private Float iharm22Rate;
@TableField("Iharm_23_Rate")
private Float iharm23Rate;
@TableField("Iharm_24_Rate")
private Float iharm24Rate;
@TableField("Iharm_25_Rate")
private Float iharm25Rate;
}

View File

@@ -0,0 +1,28 @@
package com.njcn.cloud.pojo.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author wr
* @description
* @date 2024/1/3 15:43
*/
@Data
public class AppParam {
@ApiModelProperty("监测点ID")
private String lineIndex;
@ApiModelProperty("当前页")
private Integer page;
@ApiModelProperty("每页数量")
private Integer num;
@ApiModelProperty("查询的开始时间")
private String startTime;
@ApiModelProperty("查询的结束时间")
private String endTime;
}

View File

@@ -0,0 +1,28 @@
package com.njcn.cloud.pojo.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author wr
* @description
* @date 2023/12/21 15:27
*/
@Data
public class AppReportParam extends AppParam {
@ApiModelProperty("用户ID")
private String userId;
@ApiModelProperty("系统类型1-暂态2-稳态")
private Integer systemType;
@ApiModelProperty("报告类型1-周报2-月报3-季报4-年报5-自定义报告")
private Integer reportType;
@ApiModelProperty("年份")
private Integer year;
@ApiModelProperty("季度")
private Integer quarter;
}

View File

@@ -0,0 +1,71 @@
package com.njcn.cloud.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author wr
* @description
* @date 2023/12/21 15:33
*/
@Data
public class ReportVO {
@ApiModelProperty("报告表Guid")
private String reportIndex;
@ApiModelProperty("报告名称")
private String reportName;
@ApiModelProperty("(关联Pq_Line的Line_Index)")
private String lineIndex;
@ApiModelProperty("(关联app_user表User_Index)自定义报表时填值")
private String userIndex;
@ApiModelProperty("报告生成时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
@ApiModelProperty("报告内容的起始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
@ApiModelProperty("报告内容的结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
@ApiModelProperty("系统类型(1-暂态2-稳态)")
private Integer systemType;
@ApiModelProperty("报告类型(1-周报2-月报5-自定义)")
private Integer reportType;
@ApiModelProperty("报告的资源路径")
private String reportPath;
@ApiModelProperty("报告状态(1-成功2-失败3-待审核4-删除)")
private Integer state;
@ApiModelProperty("记录报告生成失败次数")
private Integer errorCount;
@ApiModelProperty("暂态报告部门guid")
private String deptsIndex;
@ApiModelProperty("暂态发生的次数")
private Integer total;
@ApiModelProperty("测量间隔1-10分钟")
private Integer tinterval;
@ApiModelProperty("监测点名称")
private String name;
@ApiModelProperty("稳态系统越限统计")
private List<String> listResult;
}

View File

@@ -0,0 +1,17 @@
package com.njcn.cloud.pojo.vo;
import lombok.Data;
/**
* @author gbl
* @description:统计数据
*/
@Data
public class StatisticsData {
private String lineName;
private Long time;
private String eventDescribe;
private String steadyDescribe;
}

View File

@@ -0,0 +1,17 @@
package com.njcn.cloud.pojo.vo;
import lombok.Data;
import java.util.List;
/**
* @author gbl
* @description:统计数据详细信息
*/
@Data
public class StatisticsDetail {
private String name;
private String steadyInfo;
private List<StatisticsEvent> eventInfo;
}

View File

@@ -0,0 +1,13 @@
package com.njcn.cloud.pojo.vo;
import lombok.Data;
/**
* @author gbl
* @description:统计数据暂降信息
*/
@Data
public class StatisticsEvent {
public String describe;
public String eventDetail_index;
};

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);
}