diff --git a/ruoyi-ui/src/views/monitor/Interface/index.vue b/ruoyi-ui/src/views/monitor/Interface/index.vue
index c3368a90..66b89320 100644
--- a/ruoyi-ui/src/views/monitor/Interface/index.vue
+++ b/ruoyi-ui/src/views/monitor/Interface/index.vue
@@ -28,9 +28,22 @@
/>
+
+
+
+
搜索
重置
+ 导出
@@ -114,7 +127,10 @@ export default {
pageSize: 10,
interfaceOwnership: undefined,
interfaceName: undefined,
- operationStatus: undefined
+ operationStatus: undefined,
+ dateTime: undefined,
+ startTime: undefined,
+ endTime: undefined
},
interfaceData: [],
interfaceResult: undefined,
@@ -163,6 +179,21 @@ export default {
handleClose() {
this.openView = false
this.interfaceResult = undefined
+ },
+
+ /** 处理时间选择器组件 */
+ handleProcessingTime() {
+ if (this.queryParams.dateTime.length > 0) {
+ this.queryParams.startTime = this.queryParams.dateTime[0]
+ this.queryParams.endTime = this.queryParams.dateTime[1]
+ }
+ },
+
+ /** 导出按钮操作 */
+ handleExport() {
+ this.download('/externalInterface/export', {
+ ...this.queryParams
+ }, '外部接口监测.xlsx')
}
}
diff --git a/zc-business/src/main/java/com/zc/business/domain/ExternalInterfaceMonitoring.java b/zc-business/src/main/java/com/zc/business/domain/ExternalInterfaceMonitoring.java
index cddd3a76..35f99ae8 100644
--- a/zc-business/src/main/java/com/zc/business/domain/ExternalInterfaceMonitoring.java
+++ b/zc-business/src/main/java/com/zc/business/domain/ExternalInterfaceMonitoring.java
@@ -1,6 +1,8 @@
package com.zc.business.domain;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
@@ -30,19 +32,48 @@ public class ExternalInterfaceMonitoring {
@ApiModelProperty("接口所属")
private Integer interfaceOwnership;
+ @Excel(name = "接口所属名称")
+ @TableField(exist = false)
+ @ApiModelProperty("接口所属名称")
+ private String interfaceOwnershipName;
+
+ @Excel(name = "接口名称")
@ApiModelProperty("接口名称")
private String interfaceName;
+ @Excel(name = "操作人")
@ApiModelProperty("操作人")
private String operatorName;
+ @Excel(name = "操作状态")
+ @TableField(exist = false)
+ @ApiModelProperty("操作状态名称")
+ private String operationStatusName;
+
@ApiModelProperty("操作状态")
private Integer operationStatus;
- @ApiModelProperty("操作结果")
- private String operationResult;
-
+ @Excel(name = "操作时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
@ApiModelProperty("操作时间")
private Date operationTime;
+
+ @Excel(name = "操作结果")
+ @ApiModelProperty("操作结果")
+ private String operationResult;
+
+ /**
+ * 开始时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField(exist = false)
+ @ApiModelProperty("开始时间")
+ private Date startTime;
+ /**
+ * 结束时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField(exist = false)
+ @ApiModelProperty("结束时间")
+ private Date endTime;
}
diff --git a/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java b/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java
index b52fc60e..8c6aa902 100644
--- a/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java
+++ b/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java
@@ -14,6 +14,7 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.service.ISysConfigService;
import com.zc.business.controller.DcNmcController;
@@ -29,14 +30,19 @@ import com.zc.common.core.httpclient.request.RequestParams;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import okhttp3.*;
+import org.apache.poi.ss.SpreadsheetVersion;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Field;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
@@ -76,6 +82,30 @@ public class ExternalInterfaceMonitoringTask extends BaseController {
@GetMapping("/list")
public TableDataInfo list(ExternalInterfaceMonitoring externalInterfaceMonitoring) {
startPage();
+ List list = selectExternal(externalInterfaceMonitoring);
+ return getDataTable(list);
+ }
+
+ /**
+ * 外部接口监测数据导出
+ */
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, ExternalInterfaceMonitoring externalInterfaceMonitoring) throws UnsupportedEncodingException {
+ List list = selectExternal(externalInterfaceMonitoring);
+ list.forEach(external -> {
+ external.setOperationStatusName(external.getOperationStatus().equals(UniversalEnum.ONE.getNumber()) ? "成功" : "失败");
+ external.setInterfaceOwnershipName(Arrays.stream(InterfaceOwnershipEnum.values())
+ .filter(interfaceOwnershipEnum -> interfaceOwnershipEnum.getCode().equals(external.getInterfaceOwnership()))
+ .findFirst()
+ .map(InterfaceOwnershipEnum::getOwnershipName)
+ .orElse(UniversalEnum.OTHER.getValue()));
+ });
+ ExcelUtil util = new ExcelUtil<>(ExternalInterfaceMonitoring.class);
+ resetCellMaxTextLength();
+ util.exportExcel(response, list, "外部接口监测数据");
+ }
+
+ public List selectExternal(ExternalInterfaceMonitoring externalInterfaceMonitoring) {
LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
if (externalInterfaceMonitoring.getInterfaceOwnership() != null) {
lambdaQueryWrapper.eq(ExternalInterfaceMonitoring::getInterfaceOwnership, externalInterfaceMonitoring.getInterfaceOwnership());
@@ -86,9 +116,15 @@ public class ExternalInterfaceMonitoringTask extends BaseController {
if (externalInterfaceMonitoring.getInterfaceName() != null) {
lambdaQueryWrapper.like(ExternalInterfaceMonitoring::getInterfaceName, externalInterfaceMonitoring.getInterfaceName());
}
+ if (externalInterfaceMonitoring.getStartTime() != null && externalInterfaceMonitoring.getEndTime() != null) {
+ lambdaQueryWrapper.between(
+ ExternalInterfaceMonitoring::getOperationTime,
+ externalInterfaceMonitoring.getStartTime(),
+ externalInterfaceMonitoring.getEndTime()
+ );
+ }
lambdaQueryWrapper.orderByDesc(ExternalInterfaceMonitoring::getOperationTime);
- List list = externalInterfaceMonitoringMapper.selectList(lambdaQueryWrapper);
- return getDataTable(list);
+ return externalInterfaceMonitoringMapper.selectList(lambdaQueryWrapper);
}
@Scheduled(cron = "0 0/15 * * * ?")
@@ -842,4 +878,25 @@ public class ExternalInterfaceMonitoringTask extends BaseController {
voiceBroadcastingToken = JSONObject.parseObject(response.body().string()).getString("accessToken");
}
}
+
+ /**
+ * 利用反射,修改单元格最大长度
+ */
+ public static void resetCellMaxTextLength() {
+ SpreadsheetVersion excel2007 = SpreadsheetVersion.EXCEL2007;
+ if (Integer.MAX_VALUE != excel2007.getMaxTextLength()) {
+ Field field;
+ try {
+ // SpreadsheetVersion.EXCEL2007的_maxTextLength变量
+ field = excel2007.getClass().getDeclaredField("_maxTextLength");
+ // 关闭反射机制的安全检查,可以提高性能
+ field.setAccessible(true);
+ // 重新设置这个变量属性值
+ field.set(excel2007, Integer.MAX_VALUE);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}