1.审计日志问题排查
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.njcn.oss.utils;
|
package com.njcn.oss.utils;
|
||||||
|
|
||||||
|
import cn.hutool.core.io.FileUtil;
|
||||||
import com.njcn.common.config.GeneralInfo;
|
import com.njcn.common.config.GeneralInfo;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.huawei.obs.util.OBSUtil;
|
import com.njcn.huawei.obs.util.OBSUtil;
|
||||||
@@ -7,6 +8,7 @@ import com.njcn.minioss.bo.MinIoUploadResDTO;
|
|||||||
import com.njcn.minioss.config.MinIossProperties;
|
import com.njcn.minioss.config.MinIossProperties;
|
||||||
import com.njcn.minioss.util.MinIoUtils;
|
import com.njcn.minioss.util.MinIoUtils;
|
||||||
import com.njcn.oss.constant.GeneralConstant;
|
import com.njcn.oss.constant.GeneralConstant;
|
||||||
|
import com.njcn.oss.constant.OssPath;
|
||||||
import com.njcn.oss.enums.OssResponseEnum;
|
import com.njcn.oss.enums.OssResponseEnum;
|
||||||
import io.minio.*;
|
import io.minio.*;
|
||||||
import io.minio.errors.*;
|
import io.minio.errors.*;
|
||||||
@@ -21,9 +23,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.BufferedOutputStream;
|
import java.io.*;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@@ -92,7 +92,7 @@ public class FileStorageUtil {
|
|||||||
* @param dir 服务器文件存放路径
|
* @param dir 服务器文件存放路径
|
||||||
* @param flag 是否保留原始文件名
|
* @param flag 是否保留原始文件名
|
||||||
*/
|
*/
|
||||||
public String uploadMultipart(MultipartFile multipartFile, String dir,boolean flag) {
|
public String uploadMultipart(MultipartFile multipartFile, String dir, boolean flag) {
|
||||||
String filePath;
|
String filePath;
|
||||||
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
|
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
|
||||||
filePath = dir + minIoUtils.minFileName(multipartFile.getOriginalFilename());
|
filePath = dir + minIoUtils.minFileName(multipartFile.getOriginalFilename());
|
||||||
@@ -100,7 +100,7 @@ public class FileStorageUtil {
|
|||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
//把名称存入数据
|
//把名称存入数据
|
||||||
MinIoUploadResDTO minIoUploadResDTO = minIoUtils.upload(multipartFile, minIossProperties.getBucket(), dir,flag);
|
MinIoUploadResDTO minIoUploadResDTO = minIoUtils.upload(multipartFile, minIossProperties.getBucket(), dir, flag);
|
||||||
filePath = minIoUploadResDTO.getMinFileName();
|
filePath = minIoUploadResDTO.getMinFileName();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BusinessException(OssResponseEnum.UPLOAD_FILE_ERROR);
|
throw new BusinessException(OssResponseEnum.UPLOAD_FILE_ERROR);
|
||||||
@@ -136,6 +136,7 @@ public class FileStorageUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传InputStream流,并指定文件的名称
|
* 上传InputStream流,并指定文件的名称
|
||||||
|
*
|
||||||
* @author xuyang
|
* @author xuyang
|
||||||
*/
|
*/
|
||||||
public String uploadStreamSpecifyName(InputStream inputStream, String dir, String fileName) {
|
public String uploadStreamSpecifyName(InputStream inputStream, String dir, String fileName) {
|
||||||
@@ -211,7 +212,7 @@ public class FileStorageUtil {
|
|||||||
} catch (Exception exception) {
|
} catch (Exception exception) {
|
||||||
throw new BusinessException(OssResponseEnum.DOWNLOAD_FILE_STREAM_ERROR);
|
throw new BusinessException(OssResponseEnum.DOWNLOAD_FILE_STREAM_ERROR);
|
||||||
}
|
}
|
||||||
String fileType = filePath.substring(filePath.lastIndexOf('.')+1).toLowerCase();
|
String fileType = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase();
|
||||||
switch (fileType) {
|
switch (fileType) {
|
||||||
case "jpg":
|
case "jpg":
|
||||||
case "jpeg":
|
case "jpeg":
|
||||||
@@ -264,18 +265,19 @@ public class FileStorageUtil {
|
|||||||
}
|
}
|
||||||
directory = (String) Optional.ofNullable(directory).orElse("");
|
directory = (String) Optional.ofNullable(directory).orElse("");
|
||||||
String minFileName = directory + fileName;
|
String minFileName = directory + fileName;
|
||||||
this.instance.putObject((PutObjectArgs)((io.minio.PutObjectArgs.Builder)((io.minio.PutObjectArgs.Builder)PutObjectArgs.builder().bucket(bucketName)).object(minFileName)).stream(inputStream, (long)inputStream.available(), -1L).build());
|
this.instance.putObject((PutObjectArgs) ((io.minio.PutObjectArgs.Builder) ((io.minio.PutObjectArgs.Builder) PutObjectArgs.builder().bucket(bucketName)).object(minFileName)).stream(inputStream, (long) inputStream.available(), -1L).build());
|
||||||
inputStream.close();
|
inputStream.close();
|
||||||
return new MinIoUploadResDTO(minFileName, minIoUtils.getObjectUrl(bucketName, minFileName, 60));
|
return new MinIoUploadResDTO(minFileName, minIoUtils.getObjectUrl(bucketName, minFileName, 60));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: getAllFile 获取minio指定文件夹下所有文件
|
* @Description: getAllFile 获取minio指定文件夹下所有文件
|
||||||
* @Param:
|
* @Param:
|
||||||
* @return: java.lang.Iterable<io.minio.Result<io.minio.messages.Item>>
|
* @return: java.lang.Iterable<io.minio.Result < io.minio.messages.Item>>
|
||||||
* @Author: clam
|
* @Author: clam
|
||||||
* @Date: 2024/9/27
|
* @Date: 2024/9/27
|
||||||
*/
|
*/
|
||||||
public List<MultipartFile> getAllFile(String bucketName, String directory) throws Exception{
|
public List<MultipartFile> getAllFile(String bucketName, String directory) throws Exception {
|
||||||
List<MultipartFile> files = new ArrayList<>();
|
List<MultipartFile> files = new ArrayList<>();
|
||||||
Iterable<Result<Item>> results = this.instance.listObjects(
|
Iterable<Result<Item>> results = this.instance.listObjects(
|
||||||
ListObjectsArgs.builder().bucket(bucketName).prefix(directory).recursive(true).build());
|
ListObjectsArgs.builder().bucket(bucketName).prefix(directory).recursive(true).build());
|
||||||
@@ -288,7 +290,6 @@ public class FileStorageUtil {
|
|||||||
GetObjectArgs.builder().bucket(bucketName).object(item.objectName()).build());
|
GetObjectArgs.builder().bucket(bucketName).object(item.objectName()).build());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 假设你有一个方法可以将InputStream转换为MultipartFile
|
// 假设你有一个方法可以将InputStream转换为MultipartFile
|
||||||
MultipartFile multipartFile = new MockMultipartFile(item.objectName(), item.objectName(), "text/plain", stream);
|
MultipartFile multipartFile = new MockMultipartFile(item.objectName(), item.objectName(), "text/plain", stream);
|
||||||
files.add(multipartFile);
|
files.add(multipartFile);
|
||||||
@@ -297,4 +298,38 @@ public class FileStorageUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目前只给审计日志使用
|
||||||
|
*
|
||||||
|
* @author cdf
|
||||||
|
* @date 2024/10/15
|
||||||
|
*/
|
||||||
|
public File getLastFile(String bucketName, String directory) throws Exception {
|
||||||
|
File file = null;
|
||||||
|
if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
|
||||||
|
Iterable<Result<Item>> results = this.instance.listObjects(
|
||||||
|
ListObjectsArgs.builder().bucket(bucketName).prefix(directory).recursive(true).build());
|
||||||
|
Item lastItem = null;
|
||||||
|
for (Result<Item> result : results) {
|
||||||
|
Item item = result.get();
|
||||||
|
if (lastItem == null) {
|
||||||
|
lastItem = item;
|
||||||
|
} else {
|
||||||
|
if (item.lastModified().isAfter(lastItem.lastModified())) {
|
||||||
|
lastItem = item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
InputStream stream = this.instance.getObject(
|
||||||
|
GetObjectArgs.builder().bucket(bucketName).object(lastItem.objectName()).build());
|
||||||
|
|
||||||
|
file = File.createTempFile(lastItem.objectName(), "xlsx");
|
||||||
|
FileUtil.writeFromStream(stream, file);
|
||||||
|
}else if(generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS){
|
||||||
|
file = obsUtil.getLastFile(OssPath.LOGBAK);
|
||||||
|
|
||||||
|
}
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,8 +136,6 @@ public class GwSendUtil {
|
|||||||
HttpParameters.Builder builder = HttpParameters.newBuilder();
|
HttpParameters.Builder builder = HttpParameters.newBuilder();
|
||||||
|
|
||||||
builder.requestURL(sendEnum.getNewUrl()) // 设置请求的URL,可以拼接URL请求参数
|
builder.requestURL(sendEnum.getNewUrl()) // 设置请求的URL,可以拼接URL请求参数
|
||||||
.api("zongbuSync") // 设置服务名
|
|
||||||
.version("1.0.0") // 设置版本号
|
|
||||||
.method("post") // 设置调用方式, 必须为 post
|
.method("post") // 设置调用方式, 必须为 post
|
||||||
.contentType("application/json; charset=UTF-8"); //设置请求content-type
|
.contentType("application/json; charset=UTF-8"); //设置请求content-type
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import com.github.tocrhz.mqtt.annotation.MqttSubscribe;
|
import com.github.tocrhz.mqtt.annotation.MqttSubscribe;
|
||||||
import com.github.tocrhz.mqtt.annotation.Payload;
|
import com.github.tocrhz.mqtt.annotation.Payload;
|
||||||
|
import com.njcn.common.pojo.constant.LogInfo;
|
||||||
import com.njcn.common.pojo.constant.PatternRegex;
|
import com.njcn.common.pojo.constant.PatternRegex;
|
||||||
import com.njcn.common.pojo.dto.LogInfoDTO;
|
import com.njcn.common.pojo.dto.LogInfoDTO;
|
||||||
import com.njcn.common.utils.PubUtils;
|
import com.njcn.common.utils.PubUtils;
|
||||||
@@ -63,7 +64,7 @@ public class MqttMessageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
LogInfoDTO logInfoDTO = PubUtils.json2obj(new String(message.getPayload(), StandardCharsets.UTF_8),LogInfoDTO.class);
|
LogInfoDTO logInfoDTO = PubUtils.json2obj(new String(message.getPayload(), StandardCharsets.UTF_8),LogInfoDTO.class);
|
||||||
|
if(!logInfoDTO.getLoginName().equals(LogInfo.UNKNOWN_USER) && !logInfoDTO.getOperate().equals(LogInfo.UNKNOWN_OPERATE) && !logInfoDTO.getIp().equals(LogInfo.UNKNOWN_IP)){
|
||||||
if("注销".equals(logInfoDTO.getOperateType()) || "认证".equals(logInfoDTO.getOperateType())){
|
if("注销".equals(logInfoDTO.getOperateType()) || "认证".equals(logInfoDTO.getOperateType())){
|
||||||
logInfoDTO.setType(1);
|
logInfoDTO.setType(1);
|
||||||
}else {
|
}else {
|
||||||
@@ -80,6 +81,7 @@ public class MqttMessageHandler {
|
|||||||
}
|
}
|
||||||
userLogService.addUserLog(logInfoDTO);
|
userLogService.addUserLog(logInfoDTO);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订阅审计日志的记录,并进行入库操作
|
* 订阅审计日志的记录,并进行入库操作
|
||||||
|
|||||||
@@ -34,7 +34,9 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
|||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.common.utils.PubUtils;
|
import com.njcn.common.utils.PubUtils;
|
||||||
import com.njcn.db.constant.DbConstant;
|
import com.njcn.db.constant.DbConstant;
|
||||||
|
import com.njcn.oss.constant.GeneralConstant;
|
||||||
import com.njcn.oss.constant.OssPath;
|
import com.njcn.oss.constant.OssPath;
|
||||||
|
import com.njcn.oss.utils.FileStorageUtil;
|
||||||
import com.njcn.redis.utils.RedisUtil;
|
import com.njcn.redis.utils.RedisUtil;
|
||||||
import com.njcn.system.enums.SystemResponseEnum;
|
import com.njcn.system.enums.SystemResponseEnum;
|
||||||
import com.njcn.system.excel.UserLogExcel;
|
import com.njcn.system.excel.UserLogExcel;
|
||||||
@@ -57,8 +59,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.io.File;
|
import java.io.*;
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
@@ -94,6 +95,8 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
|
|
||||||
private final MqttPublisher publisher;
|
private final MqttPublisher publisher;
|
||||||
|
|
||||||
|
private final FileStorageUtil fileStorageUtil;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<AuditLogVO> getAuditLog(AuditParam auditParam) {
|
public Page<AuditLogVO> getAuditLog(AuditParam auditParam) {
|
||||||
List<AuditLogVO> auditLogVOS = new ArrayList<>();
|
List<AuditLogVO> auditLogVOS = new ArrayList<>();
|
||||||
@@ -206,11 +209,14 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
public void logFileWriter() {
|
public void logFileWriter() {
|
||||||
TimeInterval timeInterval = new TimeInterval();
|
TimeInterval timeInterval = new TimeInterval();
|
||||||
//限制多次点击
|
//限制多次点击
|
||||||
|
redisUtil.delete("logFileWriter");
|
||||||
String logFileWriter = redisUtil.getStringByKey("logFileWriter");
|
String logFileWriter = redisUtil.getStringByKey("logFileWriter");
|
||||||
if (StrUtil.isNotBlank(logFileWriter) || ObjectUtil.equals(logFileWriter, "1")) {
|
if (StrUtil.isNotBlank(logFileWriter) || ObjectUtil.equals(logFileWriter, "1")) {
|
||||||
throw new BusinessException(SystemResponseEnum.MULTIPLE_CLICKS_LOG_FILE_WRITER);
|
throw new BusinessException(SystemResponseEnum.MULTIPLE_CLICKS_LOG_FILE_WRITER);
|
||||||
}
|
}
|
||||||
redisUtil.saveByKeyWithExpire("logFileWriter", "1", 600L);
|
redisUtil.saveByKeyWithExpire("logFileWriter", "1", 600L);
|
||||||
|
|
||||||
|
|
||||||
Config config = iConfigService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getState, DataStateEnum.ENABLE.getCode()));
|
Config config = iConfigService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getState, DataStateEnum.ENABLE.getCode()));
|
||||||
LocalDateTime nowDate = LocalDateTime.now();
|
LocalDateTime nowDate = LocalDateTime.now();
|
||||||
LocalDateTime agoDate = nowDate.minusMonths(config.getLogTime()).with(TemporalAdjusters.firstDayOfMonth());
|
LocalDateTime agoDate = nowDate.minusMonths(config.getLogTime()).with(TemporalAdjusters.firstDayOfMonth());
|
||||||
@@ -223,12 +229,29 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
aa.ge("sys_user_log.update_time", date);
|
aa.ge("sys_user_log.update_time", date);
|
||||||
aa.le("sys_user_log.update_time", endTime);
|
aa.le("sys_user_log.update_time", endTime);
|
||||||
String nowTime = date + "至" + endTime;
|
String nowTime = date + "至" + endTime;
|
||||||
File file = new File(generalInfo.getBusinessTempPath() + File.separator + OssPath.LOGBAK);
|
|
||||||
|
//必须放到循环外,否则会刷新流
|
||||||
|
ExcelWriter excelWriter =null;
|
||||||
|
FileInputStream fileInputStream;
|
||||||
|
File file = null;
|
||||||
|
try {
|
||||||
|
if (generalInfo.getBusinessFileStorage() == GeneralConstant.LOCAL_DISK) {
|
||||||
|
file = new File(generalInfo.getBusinessTempPath() + File.separator + OssPath.LOGBAK);
|
||||||
if (!file.exists() && !file.isDirectory()) {
|
if (!file.exists() && !file.isDirectory()) {
|
||||||
file.mkdir();
|
file.mkdir();
|
||||||
}
|
}
|
||||||
//必须放到循环外,否则会刷新流
|
excelWriter = EasyExcel.write(generalInfo.getBusinessTempPath() + File.separator + OssPath.LOGBAK + nowTime + ExcelTypeEnum.XLSX.getValue(), UserLogExcel.class).build();
|
||||||
ExcelWriter excelWriter = EasyExcel.write(generalInfo.getBusinessTempPath() + File.separator + OssPath.LOGBAK + nowTime + ExcelTypeEnum.XLSX.getValue(), UserLogExcel.class).build();
|
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS || generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
|
||||||
|
file = File.createTempFile(date+"_"+endTime,".xlsx");
|
||||||
|
excelWriter = EasyExcel.write(file, UserLogExcel.class).build();
|
||||||
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("获取文件服务器异常");
|
||||||
|
redisUtil.delete("logFileWriter");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
//记录总数:实际中需要根据查询条件进行统计即可:一共多少条
|
//记录总数:实际中需要根据查询条件进行统计即可:一共多少条
|
||||||
int totalCount = this.count(aa);
|
int totalCount = this.count(aa);
|
||||||
@@ -257,13 +280,24 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
excelWriter.write(list, writeSheet);
|
excelWriter.write(list, writeSheet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
redisUtil.delete("logFileWriter");
|
redisUtil.delete("logFileWriter");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
excelWriter.finish();
|
excelWriter.finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS || generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
|
||||||
|
try {
|
||||||
|
fileInputStream = new FileInputStream(file);
|
||||||
|
fileStorageUtil.uploadStream(fileInputStream,OssPath.LOGBAK,file.getName());
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}finally {
|
||||||
|
file.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
redisUtil.delete("logFileWriter");
|
redisUtil.delete("logFileWriter");
|
||||||
System.out.println("日志备份结束,共花费时间" + timeInterval.intervalSecond() + "S");
|
System.out.println("日志备份结束,共花费时间" + timeInterval.intervalSecond() + "S");
|
||||||
}
|
}
|
||||||
@@ -276,12 +310,13 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
throw new BusinessException(SystemResponseEnum.MULTIPLE_CLICKS_LOG_FILE_WRITER);
|
throw new BusinessException(SystemResponseEnum.MULTIPLE_CLICKS_LOG_FILE_WRITER);
|
||||||
}
|
}
|
||||||
redisUtil.saveByKeyWithExpire("recoverLogFile", "1", 600L);
|
redisUtil.saveByKeyWithExpire("recoverLogFile", "1", 600L);
|
||||||
File newFile = getLastFile();
|
FileInputStream in = null;
|
||||||
|
File newFile = null;
|
||||||
|
try {
|
||||||
|
newFile = getLastFile();
|
||||||
if (FileUtil.isEmpty(newFile)) {
|
if (FileUtil.isEmpty(newFile)) {
|
||||||
throw new BusinessException(SystemResponseEnum.NOT_FIND_FILE);
|
throw new BusinessException(SystemResponseEnum.NOT_FIND_FILE);
|
||||||
}
|
}
|
||||||
FileInputStream in = null;
|
|
||||||
try {
|
|
||||||
in = new FileInputStream(newFile);
|
in = new FileInputStream(newFile);
|
||||||
Set<String> logIndex = new HashSet<>(this.baseMapper.getAllIndex());
|
Set<String> logIndex = new HashSet<>(this.baseMapper.getAllIndex());
|
||||||
List<UserLog> userLogs = new ArrayList<>();
|
List<UserLog> userLogs = new ArrayList<>();
|
||||||
@@ -307,6 +342,10 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
throw new BusinessException(SystemResponseEnum.LOG_EXCEPTION);
|
throw new BusinessException(SystemResponseEnum.LOG_EXCEPTION);
|
||||||
} finally {
|
} finally {
|
||||||
IOUtils.closeQuietly(in);
|
IOUtils.closeQuietly(in);
|
||||||
|
|
||||||
|
if(generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS || generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
|
||||||
|
newFile.deleteOnExit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
redisUtil.delete("recoverLogFile");
|
redisUtil.delete("recoverLogFile");
|
||||||
}
|
}
|
||||||
@@ -430,7 +469,16 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
* 返回一个最新修改日期的文件
|
* 返回一个最新修改日期的文件
|
||||||
*/
|
*/
|
||||||
public File getLastFile() {
|
public File getLastFile() {
|
||||||
File parentFile = new File(generalInfo.getBusinessTempPath() + File.separator + OssPath.LOGBAK);
|
File parentFile = null;
|
||||||
|
if(generalInfo.getBusinessFileStorage() == GeneralConstant.LOCAL_DISK){
|
||||||
|
parentFile = new File(generalInfo.getBusinessTempPath() + File.separator + OssPath.LOGBAK);
|
||||||
|
}else if(generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS || generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS){
|
||||||
|
try {
|
||||||
|
parentFile = fileStorageUtil.getLastFile("excelreport",OssPath.LOGBAK);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
//文件夹下的所有子文件数组
|
//文件夹下的所有子文件数组
|
||||||
File[] files = parentFile.listFiles();
|
File[] files = parentFile.listFiles();
|
||||||
List<Date> list;
|
List<Date> list;
|
||||||
@@ -439,7 +487,7 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
list.sort(Comparator.reverseOrder());
|
list.sort(Comparator.reverseOrder());
|
||||||
return Arrays.stream(files).filter(tempFile -> FileUtil.lastModifiedTime(tempFile).equals(list.get(0))).collect(Collectors.toList()).get(0);
|
return Arrays.stream(files).filter(tempFile -> FileUtil.lastModifiedTime(tempFile).equals(list.get(0))).collect(Collectors.toList()).get(0);
|
||||||
}
|
}
|
||||||
return null;
|
return parentFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import cn.hutool.core.date.DatePattern;
|
|||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.harmonic.api.PqTypicalSourceFeignClient;
|
import com.njcn.harmonic.api.PqTypicalSourceFeignClient;
|
||||||
|
import com.njcn.harmonic.api.UploadGwDataFeignClient;
|
||||||
|
import com.njcn.harmonic.pojo.param.UploadDataParam;
|
||||||
import com.njcn.harmonic.pojo.param.UploadParam;
|
import com.njcn.harmonic.pojo.param.UploadParam;
|
||||||
import com.njcn.system.timer.TimerTaskRunner;
|
import com.njcn.system.timer.TimerTaskRunner;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -20,15 +22,19 @@ public class PqTypicalSourceTaskRunner implements TimerTaskRunner {
|
|||||||
|
|
||||||
private final PqTypicalSourceFeignClient pqTypicalSourceFeignClient;
|
private final PqTypicalSourceFeignClient pqTypicalSourceFeignClient;
|
||||||
|
|
||||||
|
private final UploadGwDataFeignClient uploadGwDataFeignClient;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void action(String date) {
|
public void action(String date) {
|
||||||
UploadParam param=new UploadParam();
|
UploadParam param=new UploadParam();
|
||||||
param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_DATE_PATTERN));
|
String dateDeal =DateUtil.yesterday().toString(DatePattern.NORM_DATE_PATTERN);
|
||||||
String code = pqTypicalSourceFeignClient.send(param).getCode();
|
param.setTime(dateDeal);
|
||||||
if(code.equals("A0002")){
|
pqTypicalSourceFeignClient.send(param).getCode();
|
||||||
throw new BusinessException("失败");
|
|
||||||
}
|
UploadDataParam uploadDataParam = new UploadDataParam();
|
||||||
|
uploadDataParam.setSearchBeginTime(dateDeal);
|
||||||
|
uploadGwDataFeignClient.upGwCommPoint(uploadDataParam);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user