You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
3.3 KiB
88 lines
3.3 KiB
package com.project.operation.application;
|
|
|
|
import com.project.base.domain.exception.BusinessErrorException;
|
|
import com.project.base.domain.result.PageResult;
|
|
import com.project.base.domain.result.Result;
|
|
import com.project.base.domain.utils.ExcelUtil;
|
|
import com.project.operation.application.impl.OperationLogApplicationService;
|
|
import com.project.operation.domain.dto.OperationLogDTO;
|
|
import com.project.operation.domain.dto.OperationLogExportDTO;
|
|
import com.project.operation.domain.param.OperationLogParam;
|
|
import com.project.operation.domain.service.SaveOperationLogDomainService;
|
|
import com.project.operation.domain.service.SearchOperationLogDomainService;
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.List;
|
|
|
|
@Service
|
|
public class OperationLogApplicationServiceImpl implements OperationLogApplicationService {
|
|
|
|
@Autowired
|
|
private SaveOperationLogDomainService saveOperationLogDomainService;
|
|
@Autowired
|
|
private SearchOperationLogDomainService searchOperationLogDomainService;
|
|
|
|
private static final String SHEET_NAME = "操作日志数据";
|
|
private static final String EXCEL_FILENAME = "operationLog";
|
|
private static final Integer PAGE_MAX_SIZE = 5001;
|
|
private static final Integer PAGE_DEFAULT_CURRENT = 1;
|
|
private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
|
|
|
/**
|
|
* 保存日志
|
|
*/
|
|
@Override
|
|
public void saveOperationLog(OperationLogDTO operationLogDTO) {
|
|
saveOperationLogDomainService.saveOperationLog(operationLogDTO);
|
|
}
|
|
|
|
/**
|
|
* 查询日志
|
|
*/
|
|
@Override
|
|
public Result<PageResult<OperationLogDTO>> list(OperationLogParam param) {
|
|
return searchOperationLogDomainService.list(param);
|
|
}
|
|
|
|
@Override
|
|
@Async("asycExecutor")
|
|
public void saveOperationLogAsync(OperationLogDTO operationLogDTO) {
|
|
this.saveOperationLog(operationLogDTO);
|
|
}
|
|
|
|
/**
|
|
* 导出日志
|
|
*/
|
|
@Override
|
|
public void export(HttpServletResponse response, OperationLogParam param) {
|
|
//获取日志列表
|
|
param.setSize(PAGE_MAX_SIZE);
|
|
param.setCurrent(PAGE_DEFAULT_CURRENT);
|
|
|
|
List<OperationLogDTO> operationLogDTOList = searchOperationLogDomainService.list(param).getData().getContent();
|
|
|
|
if (operationLogDTOList.size() == PAGE_MAX_SIZE) {
|
|
throw new BusinessErrorException("最大条数限制5000条超过最大限制不允许导出");
|
|
}
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
|
|
|
|
List<OperationLogExportDTO> operationLogExportDTOList = new java.util.ArrayList<>(operationLogDTOList.size());
|
|
for (OperationLogDTO dto : operationLogDTOList) {
|
|
OperationLogExportDTO exportDTO = dto.toEntity(OperationLogExportDTO::new);
|
|
// 格式化操作时间为字符串
|
|
if (dto.getCreateTime() != null) {
|
|
exportDTO.setCreateTime(sdf.format(dto.getCreateTime()));
|
|
}
|
|
operationLogExportDTOList.add(exportDTO);
|
|
}
|
|
|
|
ExcelUtil<OperationLogExportDTO> util = new ExcelUtil<>();
|
|
util.exportExcel(response, operationLogExportDTOList, SHEET_NAME, EXCEL_FILENAME, OperationLogExportDTO.class);
|
|
}
|
|
|
|
}
|
|
|