diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/enums/app/RateCodeEnum.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/enums/app/RateCodeEnum.java
new file mode 100644
index 0000000..7590bf4
--- /dev/null
+++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/enums/app/RateCodeEnum.java
@@ -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 "";
+ }
+
+}
\ No newline at end of file
diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/dto/AppStatistics.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/dto/AppStatistics.java
new file mode 100644
index 0000000..882a599
--- /dev/null
+++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/dto/AppStatistics.java
@@ -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;
+
+/**
+ *
+ * 统计消息
+ *
+ *
+ * @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;
+
+
+}
diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/param/AppParam.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/param/AppParam.java
new file mode 100644
index 0000000..0740983
--- /dev/null
+++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/param/AppParam.java
@@ -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;
+}
diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/param/AppReportParam.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/param/AppReportParam.java
new file mode 100644
index 0000000..74c2eee
--- /dev/null
+++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/param/AppReportParam.java
@@ -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;
+}
diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/ReportVO.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/ReportVO.java
new file mode 100644
index 0000000..950419f
--- /dev/null
+++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/ReportVO.java
@@ -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 listResult;
+}
diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsData.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsData.java
new file mode 100644
index 0000000..89f5299
--- /dev/null
+++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsData.java
@@ -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;
+
+
+}
\ No newline at end of file
diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsDetail.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsDetail.java
new file mode 100644
index 0000000..71f017a
--- /dev/null
+++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsDetail.java
@@ -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 eventInfo;
+
+}
\ No newline at end of file
diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsEvent.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsEvent.java
new file mode 100644
index 0000000..2d5718e
--- /dev/null
+++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/StatisticsEvent.java
@@ -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;
+};
\ No newline at end of file
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/RealTimeInfo/RealTimeInfoController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/RealTimeInfo/RealTimeInfoController.java
index 4c18d0d..6d18a34 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/RealTimeInfo/RealTimeInfoController.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/RealTimeInfo/RealTimeInfoController.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/CleanMsgInfoController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/CleanMsgInfoController.java
index 2d0a729..bf23feb 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/CleanMsgInfoController.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/CleanMsgInfoController.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/DevMsgController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/DevMsgController.java
index cca52a7..874a2d6 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/DevMsgController.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/DevMsgController.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/EventMsgController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/EventMsgController.java
index 94f06a2..4b37714 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/EventMsgController.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/EventMsgController.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/SteadyMsgController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/SteadyMsgController.java
index 97a6530..9fec4c7 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/SteadyMsgController.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/information/SteadyMsgController.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/message/EventMsgPushController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/message/EventMsgPushController.java
index 63878b3..a0d5346 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/message/EventMsgPushController.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/message/EventMsgPushController.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/report/ShiningReportController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/report/ShiningReportController.java
index 2bd6268..1ec30e5 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/report/ShiningReportController.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/report/ShiningReportController.java
@@ -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 reportList(@RequestBody AppReportParam param) {
+ String methodDescribe = getMethodDescribe("reportList");
+ /********************************************************************************
+ 默认:
+ 月报,查前三个月;周报,查当前月;所有监测点
+ 自定义:
+ 没有监测点,查询符合条件所有监测点信息
+ 没有时间按默认的时间段查询
+ 开始时间或者结束时间落在报告起止时间内的都列举出来
+ *******************************************************************************/
+ Page list = shiningReportService.reportList(param);
+ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
+ }
+
+ @PostMapping("/customReport")
+ @ApiOperation(value = "自定义时间报告申请入口", notes = "自定义报告申请")
+ public HttpResult 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")
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/statistics/StatisticsController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/statistics/StatisticsController.java
new file mode 100644
index 0000000..b051267
--- /dev/null
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/statistics/StatisticsController.java
@@ -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;
+
+/**
+ *
+ * 统计消息 前端控制器
+ *
+ *
+ * @author wr
+ * @since 2024-01-03
+ */
+@RestController
+@RequestMapping("/appStatistics")
+public class StatisticsController extends BaseController {
+
+}
+
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java
index f79d77a..0262781 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/user/UserController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/user/UserController.java
index 7936413..0323d9b 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/user/UserController.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/user/UserController.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/mapper/AppStatisticsMapper.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/mapper/AppStatisticsMapper.java
new file mode 100644
index 0000000..3b72f81
--- /dev/null
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/mapper/AppStatisticsMapper.java
@@ -0,0 +1,16 @@
+package com.njcn.cloud.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.njcn.cloud.pojo.dto.AppStatistics;
+
+/**
+ *
+ * 统计消息 Mapper 接口
+ *
+ *
+ * @author wr
+ * @since 2024-01-03
+ */
+public interface AppStatisticsMapper extends BaseMapper {
+
+}
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/mapper/mapping/AppStatisticsMapper.xml b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/mapper/mapping/AppStatisticsMapper.xml
new file mode 100644
index 0000000..e4949a7
--- /dev/null
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/mapper/mapping/AppStatisticsMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppDevMsgService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppDevMsgService.java
similarity index 97%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppDevMsgService.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppDevMsgService.java
index 63b1308..d77e986 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppDevMsgService.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppDevMsgService.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppEventInfoService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppEventInfoService.java
similarity index 97%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppEventInfoService.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppEventInfoService.java
index 3ba9ff6..f46e7ae 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppEventInfoService.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppEventInfoService.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppEventMsgService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppEventMsgService.java
similarity index 96%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppEventMsgService.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppEventMsgService.java
index 47dfe73..4dd14e1 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppEventMsgService.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppEventMsgService.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppInfoSetService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppInfoSetService.java
similarity index 87%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppInfoSetService.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppInfoSetService.java
index f0d3a27..ad6cbb7 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppInfoSetService.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppInfoSetService.java
@@ -1,4 +1,4 @@
-package com.njcn.cloud.service.user;
+package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.service.IService;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppReportService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppReportService.java
new file mode 100644
index 0000000..1190cf3
--- /dev/null
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppReportService.java
@@ -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;
+
+
+/**
+ *
+ * 报告信息 服务类
+ *
+ *
+ * @author wr
+ * @since 2023-11-02
+ */
+public interface IAppReportService extends IService {
+
+ /**
+ * @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
+ * @Author: wr
+ * @Date: 2023/12/21 15:34
+ */
+ Page reportList(AppReportParam param);
+
+ /**
+ * @param param
+ * @Description: 生成自定义报告
+ * @return: int
+ * @Author: wr
+ * @Date: 2023/12/22 11:08
+ */
+ int customReport(AppReportParam param);
+
+}
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSendMsgService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSendMsgService.java
similarity index 87%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSendMsgService.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSendMsgService.java
index ccf0721..9ab5f33 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSendMsgService.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSendMsgService.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppStatisticsService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppStatisticsService.java
new file mode 100644
index 0000000..76e971a
--- /dev/null
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppStatisticsService.java
@@ -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;
+
+/**
+ *
+ * 统计消息 服务类
+ *
+ *
+ * @author wr
+ * @since 2024-01-03
+ */
+public interface IAppStatisticsService extends IService {
+
+ List queryData(String lineIndex, String startTime, String endTime, int page, int num);
+
+ StatisticsDetail queryDetail(String lineIndex, String timeID);
+}
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSteadyAssService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSteadyAssService.java
similarity index 88%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSteadyAssService.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSteadyAssService.java
index 68cdb36..d0cdadb 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSteadyAssService.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSteadyAssService.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSteadyMsgService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSteadyMsgService.java
similarity index 98%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSteadyMsgService.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSteadyMsgService.java
index ac66620..ddfc9db 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSteadyMsgService.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSteadyMsgService.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSteadyUrlService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSteadyUrlService.java
similarity index 88%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSteadyUrlService.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSteadyUrlService.java
index 18406cc..2987860 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppSteadyUrlService.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppSteadyUrlService.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppUserService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppUserService.java
similarity index 88%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppUserService.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppUserService.java
index 80fd949..d038728 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppUserService.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/IAppUserService.java
@@ -1,4 +1,4 @@
-package com.njcn.cloud.service.user;
+package com.njcn.cloud.service;
import com.baomidou.mybatisplus.extension.service.IService;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/MsgService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/MsgService.java
similarity index 96%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/MsgService.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/MsgService.java
index 8fc61e4..ba6eb02 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/MsgService.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/MsgService.java
@@ -1,4 +1,4 @@
-package com.njcn.cloud.service.user;
+package com.njcn.cloud.service;
/**
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/RealTimeInfoService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/RealTimeInfoService.java
similarity index 91%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/RealTimeInfoService.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/RealTimeInfoService.java
index e1e62ed..54a919d 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/RealTimeInfoService.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/RealTimeInfoService.java
@@ -1,4 +1,4 @@
-package com.njcn.cloud.service.user;
+package com.njcn.cloud.service;
import com.njcn.device.pq.pojo.vo.LineDetailVO;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppDevMsgServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppDevMsgServiceImpl.java
similarity index 97%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppDevMsgServiceImpl.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppDevMsgServiceImpl.java
index a37c0fd..cce6726 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppDevMsgServiceImpl.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppDevMsgServiceImpl.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppEventInfoServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppEventInfoServiceImpl.java
similarity index 98%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppEventInfoServiceImpl.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppEventInfoServiceImpl.java
index b9d855e..a1fe344 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppEventInfoServiceImpl.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppEventInfoServiceImpl.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppEventMsgServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppEventMsgServiceImpl.java
similarity index 98%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppEventMsgServiceImpl.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppEventMsgServiceImpl.java
index d22d91c..1befb1b 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppEventMsgServiceImpl.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppEventMsgServiceImpl.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppInfoSetServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppInfoSetServiceImpl.java
similarity index 81%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppInfoSetServiceImpl.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppInfoSetServiceImpl.java
index 2e56d46..a00aead 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppInfoSetServiceImpl.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppInfoSetServiceImpl.java
@@ -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;
/**
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppReportServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppReportServiceImpl.java
new file mode 100644
index 0000000..5459e00
--- /dev/null
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppReportServiceImpl.java
@@ -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;
+
+
+/**
+ *
+ * 报告信息 服务实现类
+ *
+ *
+ * @author wr
+ * @since 2023-11-02
+ */
+@Service
+@RequiredArgsConstructor
+public class AppReportServiceImpl extends ServiceImpl 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()
+ .eq(AppEventInfo::getEventdetailIndex, eventDetailIndex)
+ .ne(AppEventInfo::getReportState, 4)
+ );
+ if (ObjectUtil.isNull(one) || one.getReportState() != 1) {
+ try {
+ Map 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()
+ .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 reportList(AppReportParam param) {
+ Page page = new Page<>();
+ List info = new ArrayList<>();
+ //先获取用户部门,在根据部门信息获取监测点信息
+ List users = userFeignClient.getUserByIdList(Collections.singletonList(param.getUserId())).getData();
+ if (CollUtil.isNotEmpty(users)) {
+ User user = users.get(0);
+ //获取所有监测点id
+ List lineIds = generalDeviceInfoClient.deptGetRunLine(user.getDeptId()).getData();
+ Page page1 = this.page(new Page<>(param.getPage(), param.getNum()), new LambdaQueryWrapper()
+ .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 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() {{
+ add("共发生" + count + "次暂降事件");
+ }});
+ vo.setName(dept.getName() + "报告");
+ info.add(vo);
+ }
+ }
+ }
+ }
+ page.setRecords(info);
+ return page;
+ }
+
+ @Override
+ public int customReport(AppReportParam param) {
+ //查询报告是否存在
+ LambdaQueryWrapper 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 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()
+ .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()
+ .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 info, List records) {
+ //获取分页报告监测点id
+ List 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 limitRates = harmDataFeignClient.getLinesRate(rateLine).getData();
+ Map limitRateMap = limitRates.stream()
+ .collect(Collectors.toMap(RStatLimitRateDPO::getLineId, Function.identity()));
+ //获取监测点信息
+ List lineDetails = lineFeignClient.getLineDetailByIds(lineReportIds).getData();
+ Map lineDetailMap = lineDetails.stream()
+ .collect(Collectors.toMap(LineDetailVO.Detail::getLineId, Function.identity()));
+ ReportVO vo;
+ List 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 RateList(List 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 createEventDetailReport(String eventIndex, AppEventInfo appEventInfo) throws Exception {
+ Map map = new HashMap<>();
+ WaveDataDTO waveData = appEventInfoService.analyseWave(eventIndex, 2);
+
+ if (waveData.getListWaveData().size() == 0) {
+ map.put("noData", "2");
+ return map;
+ }
+ //数据筛选,如果是双路电压的话,会存在2个波形数据
+ List 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 eventDetailEigenvalue = new ArrayList<>();
+ List 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 eventDetails = eventDetailFeignClient.getEventDetailByIdsList(Arrays.asList(eventIndex)).getData();
+ List linedIds = eventDetails.stream().map(RmpEventDetailPO::getLineId).distinct().collect(Collectors.toList());
+ List 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;
+ }
+}
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSendMsgServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSendMsgServiceImpl.java
similarity index 81%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSendMsgServiceImpl.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSendMsgServiceImpl.java
index 19b2410..217ff6f 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSendMsgServiceImpl.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSendMsgServiceImpl.java
@@ -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;
/**
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppStatisticsServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppStatisticsServiceImpl.java
new file mode 100644
index 0000000..a136cf6
--- /dev/null
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppStatisticsServiceImpl.java
@@ -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;
+
+/**
+ *
+ * 统计消息 服务实现类
+ *
+ *
+ * @author wr
+ * @since 2024-01-03
+ */
+@Service
+public class AppStatisticsServiceImpl extends ServiceImpl implements IAppStatisticsService {
+
+ @Override
+ public List queryData(String lineIndex, String startTime, String endTime, int page, int num) {
+ return null;
+ }
+
+ @Override
+ public StatisticsDetail queryDetail(String lineIndex, String timeID) {
+ return null;
+ }
+}
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSteadyAssServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSteadyAssServiceImpl.java
similarity index 81%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSteadyAssServiceImpl.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSteadyAssServiceImpl.java
index e669f52..0ee1cad 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSteadyAssServiceImpl.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSteadyAssServiceImpl.java
@@ -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;
/**
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSteadyMsgServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSteadyMsgServiceImpl.java
similarity index 99%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSteadyMsgServiceImpl.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSteadyMsgServiceImpl.java
index 857c6ce..cd779ff 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSteadyMsgServiceImpl.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSteadyMsgServiceImpl.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSteadyUrlServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSteadyUrlServiceImpl.java
similarity index 81%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSteadyUrlServiceImpl.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSteadyUrlServiceImpl.java
index 8e553e3..1443a98 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppSteadyUrlServiceImpl.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppSteadyUrlServiceImpl.java
@@ -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;
/**
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppUserServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppUserServiceImpl.java
similarity index 97%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppUserServiceImpl.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppUserServiceImpl.java
index 0bcae48..9574baf 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppUserServiceImpl.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppUserServiceImpl.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/MsgServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/MsgServiceImpl.java
similarity index 99%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/MsgServiceImpl.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/MsgServiceImpl.java
index a893d11..f5a9e58 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/MsgServiceImpl.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/MsgServiceImpl.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/RealTimeInfoServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/RealTimeInfoServiceImpl.java
similarity index 85%
rename from app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/RealTimeInfoServiceImpl.java
rename to app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/RealTimeInfoServiceImpl.java
index 3a7ef54..870f79e 100644
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/RealTimeInfoServiceImpl.java
+++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/RealTimeInfoServiceImpl.java
@@ -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;
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppReportServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppReportServiceImpl.java
deleted file mode 100644
index f181369..0000000
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/user/AppReportServiceImpl.java
+++ /dev/null
@@ -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;
-
-
-
-/**
- *
- * 报告信息 服务实现类
- *
- *
- * @author wr
- * @since 2023-11-02
- */
-@Service
-@RequiredArgsConstructor
-public class AppReportServiceImpl extends ServiceImpl 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()
- .eq(AppEventInfo::getEventdetailIndex, eventDetailIndex)
- .ne(AppEventInfo::getReportState, 4)
- );
- if (ObjectUtil.isNull(one)||one.getReportState() != 1) {
- try {
- Map 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()
- .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 createEventDetailReport(String eventIndex,AppEventInfo appEventInfo) throws Exception {
- Map map=new HashMap<>();
- WaveDataDTO waveData = appEventInfoService.analyseWave(eventIndex, 2);
-
- if (waveData.getListWaveData().size() == 0) {
- map.put("noData","2");
- return map;
- }
- //数据筛选,如果是双路电压的话,会存在2个波形数据
- List 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 eventDetailEigenvalue =new ArrayList<>();
- List 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 eventDetails = eventDetailFeignClient.getEventDetailByIdsList(Arrays.asList(eventIndex)).getData();
- List linedIds = eventDetails.stream().map(RmpEventDetailPO::getLineId).distinct().collect(Collectors.toList());
- List 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;
- }
-}
diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppReportService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppReportService.java
deleted file mode 100644
index 6647702..0000000
--- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/user/IAppReportService.java
+++ /dev/null
@@ -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;
-
-
-/**
- *
- * 报告信息 服务类
- *
- *
- * @author wr
- * @since 2023-11-02
- */
-public interface IAppReportService extends IService {
-
- /**
- * @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);
-}