feat(system): 添加日志实例导出功能
- 新增 LogExportExcelVO 和 LogExportVO 类用于日志导出 - 在 LogInstanceController 中添加 exportLogInstanceExcel 方法处理导出请求 - 在 LogInstanceService 接口中添加 getLogInstanceExport 方法 - 在 LogInstanceServiceImpl 中实现 getLogInstanceExport 方法,用于获取日志导出列表 - 优化 BpmOAImprestController 中的代码结构
This commit is contained in:
parent
efb2fdfee0
commit
d83dca6b87
@ -58,6 +58,7 @@ public class BpmOAImprestController {
|
||||
BpmOAImprestDO imprest = imprestService.getImprest(id);
|
||||
BpmOAImprestRespVO respVO = BpmOAImprestConvert.INSTANCE.convert(imprest);
|
||||
if (respVO != null) {
|
||||
if (respVO.getBankId() != null) {
|
||||
// 获取收款账号信息
|
||||
BankRespDTO bankRespDTO = bankApi.getBank(respVO.getBankId()).getCheckedData();
|
||||
if (bankRespDTO != null) {
|
||||
@ -65,6 +66,7 @@ public class BpmOAImprestController {
|
||||
respVO.setNickname(bankRespDTO.getNickname());
|
||||
respVO.setBankNo(bankRespDTO.getBankNo());
|
||||
}
|
||||
}
|
||||
|
||||
// 获取公司信息
|
||||
DeptRespDTO company = deptApi.getDept(respVO.getCompanyId()).getCheckedData();
|
||||
|
@ -306,12 +306,12 @@ public class LogInstanceController {
|
||||
@Operation(summary = "导出日志实例 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('system:log-instance:export')")
|
||||
@OperateLog(type = EXPORT)
|
||||
public void exportLogInstanceExcel(@Valid LogInstancePageReqVO pageReqVO,
|
||||
public void exportLogInstanceExcel(@Valid LogExportVO reqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<LogInstanceRespVO> list = logInstanceService.getLogInstancePage(pageReqVO, null).getRecords();
|
||||
|
||||
List<LogExportExcelVO> list = logInstanceService.getLogInstanceExport(reqVO);
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "日志实例的拓展.xls", "数据", LogInstanceRespVO.class,
|
||||
BeanUtils.toBean(list, LogInstanceRespVO.class));
|
||||
ExcelUtils.write(response, "日志实例的拓展.xls", "数据", LogExportExcelVO.class,
|
||||
list);
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.validation.IdCard;
|
||||
import cn.iocoder.yudao.framework.common.validation.Mobile;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 日志Excel 导出 VO
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
|
||||
public class LogExportExcelVO {
|
||||
|
||||
@ExcelProperty("用户名称")
|
||||
private String nickname;
|
||||
|
||||
@ExcelProperty("日期")
|
||||
private String time;
|
||||
|
||||
@ExcelProperty("标题")
|
||||
private String title;
|
||||
|
||||
@ExcelProperty("内容")
|
||||
private String content;
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Schema(description = "管理后台 - 日志实例导出 Response VO")
|
||||
@Data
|
||||
public class LogExportVO {
|
||||
|
||||
@Schema(description = "日志模版编号")
|
||||
private Long formId;
|
||||
|
||||
@Schema(description = "时间范围")
|
||||
private String[] time;
|
||||
}
|
@ -92,4 +92,11 @@ public interface LogInstanceService {
|
||||
* @return
|
||||
*/
|
||||
LogInstanceNextOrUpVO getNextOrUp(LogInstancePageReqVO dto, Long id, Integer pagingType);
|
||||
|
||||
/**
|
||||
* 获取日志导出列表
|
||||
* @param reqVO 请求参数
|
||||
* @return 日志列表
|
||||
*/
|
||||
List<LogExportExcelVO> getLogInstanceExport(LogExportVO reqVO);
|
||||
}
|
||||
|
@ -1,11 +1,13 @@
|
||||
package cn.iocoder.yudao.module.system.service.worklog;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.*;
|
||||
import cn.iocoder.yudao.module.system.convert.worklog.LogInstanceConvert;
|
||||
@ -286,7 +288,7 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
item.setAvatar(userDO.getAvatar());
|
||||
}
|
||||
|
||||
//设置日志内部分
|
||||
//设置日志内部分an
|
||||
LogFormDO logFormDO = formMap.get(item.getFormId());
|
||||
List<String> fields = logFormDO.getFields();
|
||||
StringBuilder workLogContent = new StringBuilder();
|
||||
@ -445,6 +447,67 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LogExportExcelVO> getLogInstanceExport(LogExportVO reqVO) {
|
||||
List<LogInstanceDO> list = logInstanceMapper.selectList(new LambdaQueryWrapperX<LogInstanceDO>()
|
||||
.eqIfPresent(LogInstanceDO::getFormId, reqVO.getFormId())
|
||||
.betweenIfPresent(LogInstanceDO::getTime, reqVO.getTime()));
|
||||
|
||||
List<LogExportExcelVO> result = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
|
||||
//模版ids过滤
|
||||
Set<Long> workFormIds = list.stream().map(LogInstanceDO::getFormId).collect(Collectors.toSet());
|
||||
|
||||
// 查询模版列表
|
||||
List<LogFormDO> formList = logFormService.getFormList(workFormIds);
|
||||
Map<Long, LogFormDO> formMap = formList.stream().collect(Collectors.toMap(LogFormDO::getId, item -> item));
|
||||
|
||||
//查询用户信息列表
|
||||
Set<Long> userIds = list.stream().map(LogInstanceDO::getStartUserId).collect(Collectors.toSet());
|
||||
Map<Long, AdminUserDO> userMap = adminUserService.getUserMap(userIds);
|
||||
|
||||
//遍历
|
||||
for (LogInstanceDO item : list) {
|
||||
LogExportExcelVO logExportExcelVO = new LogExportExcelVO();
|
||||
|
||||
// 设置时间
|
||||
logExportExcelVO.setTime(item.getTime());
|
||||
|
||||
//设置发起人用户名称和头像
|
||||
AdminUserDO userDO = userMap.get(item.getStartUserId());
|
||||
if (userDO != null) {
|
||||
logExportExcelVO.setNickname(userDO.getNickname());
|
||||
}
|
||||
|
||||
//设置日志内部分an
|
||||
LogFormDO logFormDO = formMap.get(item.getFormId());
|
||||
List<String> fields = logFormDO.getFields();
|
||||
if (!item.getFormVariables().isEmpty()) {
|
||||
JSONObject workLogContentJson = new JSONObject(item.getFormVariables());
|
||||
for (String fieldItem : fields) {
|
||||
JSONObject fieldJson = new JSONObject(fieldItem);
|
||||
if ("upload".equals(fieldJson.getStr("type"))) {
|
||||
continue;
|
||||
}
|
||||
String fieldStr = fieldJson.getStr("field");
|
||||
String title = fieldJson.getStr("title");
|
||||
if (fieldStr == null || title == null) {
|
||||
continue;
|
||||
}
|
||||
String field = workLogContentJson.getStr(fieldStr);
|
||||
logExportExcelVO.setTitle(title);
|
||||
logExportExcelVO.setContent(field);
|
||||
|
||||
result.add(logExportExcelVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LogInstanceDO> getNeedWriteLogInstanceByTimeRange(Long fromId, List<String> time, Long userId) {
|
||||
return logInstanceMapper.selectList(new LambdaQueryWrapper<LogInstanceDO>()
|
||||
|
Loading…
Reference in New Issue
Block a user