恢复控制器 controller

This commit is contained in:
yuejiajun 2025-09-30 10:57:54 +08:00
parent 63230dd677
commit e82e2ef66f
4 changed files with 598 additions and 680 deletions

View File

@ -1,241 +1,259 @@
//package com.example.demo.parser.controller;
//
//import com.example.demo.common.wrapper.WrapMapper;
//import com.example.demo.common.wrapper.Wrapper;
//import com.example.demo.common.exception.BusinessException;
//import com.example.demo.common.utils.FileUtil;
//import com.example.demo.common.utils.XmlParserUtil;
//import com.example.demo.parser.model.dto.FileRecordDTO;
//import com.example.demo.parser.model.vo.FileRecordVO;
//import com.example.demo.parser.service.FileRecordService;
//import com.mybatisflex.core.paginate.Page;
//import io.swagger.v3.oas.annotations.Operation;
//import io.swagger.v3.oas.annotations.Parameter;
//import io.swagger.v3.oas.annotations.tags.Tag;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.File;
//import java.nio.file.Path;
//import java.nio.file.Paths;
//import java.util.List;
//
///**
// * 文件解析控制器
// * 提供XML文件上传解析和转换的RESTful API接口
// *
// * @author 岳佳君 (2025年09月25日 16:30:00)
// * @version 1.0.0
// */
//@Slf4j
//@RestController
//@RequestMapping("/parser/files")
//@RequiredArgsConstructor
//@Tag(name = "文件解析管理", description = "提供XML文件上传、解析和转换的接口")
//public class FileParserController {
//
// private final FileRecordService fileRecordService;
//
// @Value("${xml-parser.file.upload-dir:./upload}")
// private String uploadDir;
//
// @Value("${xml-parser.file.temp-dir:./temp}")
// private String tempDir;
//
// /**
// * 上传XML文件
// *
// * @param file 上传的XML文件
// * @return 操作结果包装对象
// */
// @PostMapping("/upload")
// @Operation(summary = "上传XML文件", description = "上传XML文件并进行解析准备")
// public Wrapper<FileRecordVO> uploadFile(
// @Parameter(description = "XML文件", required = true)
// @RequestParam("file") MultipartFile file) {
// try {
// // 验证文件类型
// if (!isValidXmlFile(file)) {
// return WrapMapper.fail("请上传有效的XML文件");
// }
//
// // 创建上传目录
// FileUtil.createDirectory(uploadDir);
//
// // 生成唯一文件名
// String originalFilename = file.getOriginalFilename();
// String uniqueFilename = FileUtil.generateUniqueFileName(originalFilename);
// String filePath = Paths.get(uploadDir, uniqueFilename).toString();
//
// // 保存文件
// file.transferTo(new File(filePath));
//
// // 创建文件记录
// FileRecordDTO record = new FileRecordDTO();
// record.setFileName(originalFilename);
// record.setFilePath(filePath);
// record.setFileSize(file.getSize());
// record.setStatus("UPLOADED");
// record.setProcessLog("文件上传成功");
//
// String recordId = fileRecordService.create(record);
// FileRecordVO result = fileRecordService.getById(recordId);
//
// return WrapMapper.ok(result, "文件上传成功");
// } catch (BusinessException e) {
// log.error("文件上传失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("文件上传异常: {}", e.getMessage(), e);
// return WrapMapper.fail("文件上传失败");
// }
// }
//
// /**
// * 解析XML文件
// *
// * @param recordId 文件记录ID
// * @return 操作结果包装对象
// */
// @PostMapping("/parse/{recordId}")
// @Operation(summary = "解析XML文件", description = "解析已上传的XML文件")
// public Wrapper<FileRecordVO> parseFile(
// @Parameter(description = "文件记录ID", required = true)
// @PathVariable String recordId) {
// try {
// FileRecordVO record = fileRecordService.getById(recordId);
// if (record == null) {
// return WrapMapper.fail("文件记录不存在");
// }
//
// // 更新状态为解析中
// fileRecordService.updateStatus(recordId, "PARSING", "开始解析XML文件");
//
// // 解析XML文件
// String xmlFilePath = record.getFilePath();
// String txtFilePath = generateTxtFilePath(xmlFilePath);
//
// try {
// XmlParserUtil.parseXmlToTxt(xmlFilePath, txtFilePath);
//
// // 更新状态为解析成功
// fileRecordService.updateStatus(recordId, "PARSED", "XML文件解析成功");
//
// FileRecordVO result = fileRecordService.getById(recordId);
// return WrapMapper.ok(result, "XML文件解析成功");
//
// } catch (Exception e) {
// // 更新状态为解析失败
// fileRecordService.updateStatus(recordId, "PARSE_FAILED", "XML文件解析失败: " + e.getMessage());
// throw new BusinessException("XML文件解析失败: " + e.getMessage());
// }
//
// } catch (BusinessException e) {
// log.error("文件解析失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("文件解析异常: {}", e.getMessage(), e);
// return WrapMapper.fail("文件解析失败");
// }
// }
//
// /**
// * 获取文件记录详情
// *
// * @param recordId 文件记录ID
// * @return 文件记录详情包装对象
// */
// @GetMapping("/{recordId}")
// @Operation(summary = "获取文件记录详情", description = "根据ID获取文件记录的详细信息")
// public Wrapper<FileRecordVO> getFileRecord(
// @Parameter(description = "文件记录ID", required = true)
// @PathVariable String recordId) {
// try {
// FileRecordVO result = fileRecordService.getById(recordId);
// return WrapMapper.ok(result, "获取文件记录详情成功");
// } catch (BusinessException e) {
// log.error("获取文件记录详情失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("获取文件记录详情异常: {}", e.getMessage(), e);
// return WrapMapper.fail("获取文件记录详情失败");
// }
// }
//
// /**
// * 分页查询文件记录列表
// *
// * @param pageNumber 页码
// * @param pageSize 每页大小
// * @return 分页结果包装对象
// */
// @GetMapping("/page")
// @Operation(summary = "分页查询文件记录", description = "分页查询文件记录列表")
// public Wrapper<Page<FileRecordVO>> pageList(
// @Parameter(description = "页码", example = "1")
// @RequestParam(defaultValue = "1") Integer pageNumber,
// @Parameter(description = "每页大小", example = "10")
// @RequestParam(defaultValue = "10") Integer pageSize) {
// try {
// Page<FileRecordVO> result = fileRecordService.pageList(pageNumber, pageSize);
// return WrapMapper.ok(result, "查询文件记录列表成功");
// } catch (Exception e) {
// log.error("查询文件记录列表异常: {}", e.getMessage(), e);
// return WrapMapper.fail("查询文件记录列表失败");
// }
// }
//
// /**
// * 获取所有文件记录列表
// *
// * @return 文件记录列表包装对象
// */
// @GetMapping("/list")
// @Operation(summary = "获取所有文件记录", description = "获取所有文件记录的列表")
// public Wrapper<List<FileRecordVO>> listAll() {
// try {
// List<FileRecordVO> result = fileRecordService.listAll();
// return WrapMapper.ok(result, "获取所有文件记录成功");
// } catch (Exception e) {
// log.error("获取所有文件记录异常: {}", e.getMessage(), e);
// return WrapMapper.fail("获取所有文件记录失败");
// }
// }
//
// /**
// * 验证是否为有效的XML文件
// *
// * @param file 上传的文件
// * @return 是否有效
// */
// private boolean isValidXmlFile(MultipartFile file) {
// if (file == null || file.isEmpty()) {
// return false;
// }
//
// String originalFilename = file.getOriginalFilename();
// if (originalFilename == null) {
// return false;
// }
//
// // 检查文件扩展名
// String extension = FileUtil.getFileExtension(originalFilename);
// return "xml".equalsIgnoreCase(extension);
// }
//
// /**
// * 生成TXT文件路径
// *
// * @param xmlFilePath XML文件路径
// * @return TXT文件路径
// */
// private String generateTxtFilePath(String xmlFilePath) {
// Path xmlPath = Paths.get(xmlFilePath);
// String xmlFileName = xmlPath.getFileName().toString();
// String txtFileName = xmlFileName.replace(".xml", ".txt");
// return xmlPath.getParent().resolve(txtFileName).toString();
// }
//}
package com.example.demo.parser.controller;
import cn.zhxu.bs.SearchResult;
import com.example.demo.common.wrapper.WrapMapper;
import com.example.demo.common.wrapper.Wrapper;
import com.example.demo.common.exception.BusinessException;
import com.example.demo.common.utils.FileUtil;
import com.example.demo.common.utils.XmlParserUtil;
import com.example.demo.parser.entity.FileRecordEntity;
import com.example.demo.parser.model.dto.FileRecordDTO;
import com.example.demo.parser.model.dto.FileRecordQueryDTO;
import com.example.demo.parser.model.vo.FileRecordVO;
import com.example.demo.parser.service.FileRecordService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Date;
import java.util.List;
/**
* 文件解析控制器
* 提供XML文件上传解析和转换的RESTful API接口
*
* @author 岳佳君 (2025年09月25日 16:30:00)
* @version 1.0.0
*/
@Slf4j
@RestController
@RequestMapping("/parser/files")
@RequiredArgsConstructor
@Tag(name = "文件解析管理", description = "提供XML文件上传、解析和转换的接口")
public class FileParserController {
private final FileRecordService fileRecordService;
@Value("${xml-parser.file.upload-dir:./upload}")
private String uploadDir;
@Value("${xml-parser.file.temp-dir:./temp}")
private String tempDir;
/**
* 上传XML文件
*
* @param file 上传的XML文件
* @return 操作结果包装对象
*/
@PostMapping("/upload")
@Operation(summary = "上传XML文件", description = "上传XML文件并进行解析准备")
public Wrapper<FileRecordVO> uploadFile(
@Parameter(description = "XML文件", required = true)
@RequestParam("file") MultipartFile file) {
try {
// 验证文件类型
if (!isValidXmlFile(file)) {
return WrapMapper.fail("请上传有效的XML文件");
}
// 创建上传目录
FileUtil.createDirectory(uploadDir);
// 生成唯一文件名
String originalFilename = file.getOriginalFilename();
String uniqueFilename = FileUtil.generateUniqueFileName(originalFilename);
String filePath = Paths.get(uploadDir, uniqueFilename).toString();
// 保存文件
file.transferTo(new File(filePath));
// 创建文件记录
FileRecordDTO record = new FileRecordDTO();
record.setFileName(originalFilename);
record.setFilePath(filePath);
record.setStatus("UPLOADED");
FileRecordVO result = fileRecordService.create(record);
return WrapMapper.ok(result, "文件上传成功");
} catch (BusinessException e) {
log.error("文件上传失败: {}", e.getMessage(), e);
return WrapMapper.fail(e.getMessage());
} catch (Exception e) {
log.error("文件上传异常: {}", e.getMessage(), e);
return WrapMapper.fail("文件上传失败");
}
}
/**
* 解析XML文件
*
* @param recordId 文件记录ID
* @return 操作结果包装对象
*/
@PostMapping("/parse/{recordId}")
@Operation(summary = "解析XML文件", description = "解析已上传的XML文件")
public Wrapper<FileRecordVO> parseFile(
@Parameter(description = "文件记录ID", required = true)
@PathVariable String recordId) {
try {
FileRecordVO record = fileRecordService.detail(recordId);
if (record == null) {
return WrapMapper.fail("文件记录不存在");
}
// 更新状态为解析中 - 使用builder模式构建实体后调用updateById
FileRecordEntity parsingEntity = FileRecordEntity.builder()
.id(recordId)
.status("PARSING")
.processLog("开始解析XML文件")
.processTime(new Date())
.build();
fileRecordService.updateById(parsingEntity);
// 解析XML文件
String xmlFilePath = record.getFilePath();
String txtFilePath = generateTxtFilePath(xmlFilePath);
try {
XmlParserUtil.parseXmlToTxt(xmlFilePath, txtFilePath);
// 更新状态为解析成功 - 使用builder模式构建实体后调用updateById
FileRecordEntity parsedEntity = FileRecordEntity.builder()
.id(recordId)
.status("PARSED")
.processLog("XML文件解析成功")
.processTime(new Date())
.build();
fileRecordService.updateById(parsedEntity);
FileRecordVO result = fileRecordService.detail(recordId);
return WrapMapper.ok(result, "XML文件解析成功");
} catch (Exception e) {
// 更新状态为解析失败 - 使用builder模式构建实体后调用updateById
FileRecordEntity failedEntity = FileRecordEntity.builder()
.id(recordId)
.status("PARSE_FAILED")
.processLog("XML文件解析失败: " + e.getMessage())
.processTime(new Date())
.build();
fileRecordService.updateById(failedEntity);
throw new BusinessException("XML文件解析失败: " + e.getMessage());
}
} catch (BusinessException e) {
log.error("文件解析失败: {}", e.getMessage(), e);
return WrapMapper.fail(e.getMessage());
} catch (Exception e) {
log.error("文件解析异常: {}", e.getMessage(), e);
return WrapMapper.fail("文件解析失败");
}
}
/**
* 获取文件记录详情
*
* @param recordId 文件记录ID
* @return 文件记录详情包装对象
*/
@GetMapping("/{recordId}")
@Operation(summary = "获取文件记录详情", description = "根据ID获取文件记录的详细信息")
public Wrapper<FileRecordVO> getFileRecord(
@Parameter(description = "文件记录ID", required = true)
@PathVariable String recordId) {
try {
FileRecordVO result = fileRecordService.detail(recordId);
return WrapMapper.ok(result, "获取文件记录详情成功");
} catch (BusinessException e) {
log.error("获取文件记录详情失败: {}", e.getMessage(), e);
return WrapMapper.fail(e.getMessage());
} catch (Exception e) {
log.error("获取文件记录详情异常: {}", e.getMessage(), e);
return WrapMapper.fail("获取文件记录详情失败");
}
}
/**
* 分页查询文件记录列表
*
* @param queryDTO 查询封装对象
* @return 分页结果包装对象
*/
@GetMapping("/page")
@Operation(summary = "分页查询文件记录", description = "分页查询文件记录列表")
public Wrapper<SearchResult<FileRecordVO>> pageList(
@Parameter(description = "文件记录QueryDTO数据", required = true)
@RequestBody FileRecordQueryDTO queryDTO) {
try {
SearchResult<FileRecordVO> result = fileRecordService.pageList(queryDTO);
return WrapMapper.ok(result);
} catch (Exception e) {
log.error("查询文件记录列表异常: {}", e.getMessage(), e);
return WrapMapper.fail("查询文件记录列表失败");
}
}
/**
* 获取所有文件记录列表
*
* @param queryDTO 查询封装对象
* @return 文件记录列表包装对象
*/
@GetMapping("/options")
@Operation(summary = "获取所有文件记录", description = "获取所有文件记录的列表")
public Wrapper<List<FileRecordVO>> options(
@Parameter(description = "文件记录QueryDTO数据", required = true)
@RequestBody FileRecordQueryDTO queryDTO) {
try {
List<FileRecordVO> result = fileRecordService.option(queryDTO);
return WrapMapper.ok(result, "获取所有文件记录成功");
} catch (Exception e) {
log.error("获取所有文件记录异常: {}", e.getMessage(), e);
return WrapMapper.fail("获取所有文件记录失败");
}
}
/**
* 验证是否为有效的XML文件
*
* @param file 上传的文件
* @return 是否有效
*/
private boolean isValidXmlFile(MultipartFile file) {
if (file == null || file.isEmpty()) {
return false;
}
String originalFilename = file.getOriginalFilename();
if (originalFilename == null) {
return false;
}
// 检查文件扩展名
String extension = FileUtil.getFileExtension(originalFilename);
return "xml".equalsIgnoreCase(extension);
}
/**
* 生成TXT文件路径
*
* @param xmlFilePath XML文件路径
* @return TXT文件路径
*/
private String generateTxtFilePath(String xmlFilePath) {
Path xmlPath = Paths.get(xmlFilePath);
String xmlFileName = xmlPath.getFileName().toString();
String txtFileName = xmlFileName.replace(".xml", ".txt");
return xmlPath.getParent().resolve(txtFileName).toString();
}
}

View File

@ -1,219 +1,168 @@
//package com.example.demo.parser.controller;
//
//import com.example.demo.common.wrapper.WrapMapper;
//import com.example.demo.common.wrapper.Wrapper;
//import com.example.demo.common.exception.BusinessException;
//import com.example.demo.parser.model.dto.MapperRuleDTO;
//import com.example.demo.parser.model.vo.MapperRuleVO;
//import com.example.demo.parser.service.MapperRuleService;
//import com.mybatisflex.core.paginate.Page;
//import io.swagger.v3.oas.annotations.Operation;
//import io.swagger.v3.oas.annotations.Parameter;
//import io.swagger.v3.oas.annotations.tags.Tag;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.List;
//
///**
// * 映射规则控制器
// * 提供XML映射规则管理的RESTful API接口
// *
// * @author 岳佳君 (2025年09月25日 16:30:00)
// * @version 1.0.0
// */
//@Slf4j
//@RestController
//@RequestMapping("/parser/mapper-rules")
//@RequiredArgsConstructor
//@Tag(name = "映射规则管理", description = "提供XML映射规则管理的接口")
//public class MapperRuleController {
//
// private final MapperRuleService mapperRuleService;
//
// /**
// * 创建映射规则
// *
// * @param rule 映射规则数据
// * @return 操作结果包装对象
// */
// @PostMapping
// @Operation(summary = "创建映射规则", description = "创建新的映射规则")
// public Wrapper<MapperRuleVO> createRule(
// @Parameter(description = "映射规则数据", required = true)
// @RequestBody MapperRuleDTO rule) {
// try {
// String ruleId = mapperRuleService.create(rule);
// MapperRuleVO result = mapperRuleService.getById(ruleId);
// return WrapMapper.ok(result, "映射规则创建成功");
// } catch (BusinessException e) {
// log.error("映射规则创建失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("映射规则创建异常: {}", e.getMessage(), e);
// return WrapMapper.fail("映射规则创建失败");
// }
// }
//
// /**
// * 更新映射规则
// *
// * @param ruleId 规则ID
// * @param rule 映射规则数据
// * @return 操作结果包装对象
// */
// @PutMapping("/{ruleId}")
// @Operation(summary = "更新映射规则", description = "更新指定的映射规则")
// public Wrapper<MapperRuleVO> updateRule(
// @Parameter(description = "规则ID", required = true)
// @PathVariable String ruleId,
// @Parameter(description = "映射规则数据", required = true)
// @RequestBody MapperRuleDTO rule) {
// try {
// mapperRuleService.update(ruleId, rule);
// MapperRuleVO result = mapperRuleService.getById(ruleId);
// return WrapMapper.ok(result, "映射规则更新成功");
// } catch (BusinessException e) {
// log.error("映射规则更新失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("映射规则更新异常: {}", e.getMessage(), e);
// return WrapMapper.fail("映射规则更新失败");
// }
// }
//
// /**
// * 删除映射规则
// *
// * @param ruleId 规则ID
// * @return 操作结果包装对象
// */
// @DeleteMapping("/{ruleId}")
// @Operation(summary = "删除映射规则", description = "删除指定的映射规则")
// public Wrapper<Void> deleteRule(
// @Parameter(description = "规则ID", required = true)
// @PathVariable String ruleId) {
// try {
// mapperRuleService.delete(ruleId);
// return WrapMapper.ok(null, "映射规则删除成功");
// } catch (BusinessException e) {
// log.error("映射规则删除失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("映射规则删除异常: {}", e.getMessage(), e);
// return WrapMapper.fail("映射规则删除失败");
// }
// }
//
// /**
// * 获取映射规则详情
// *
// * @param ruleId 规则ID
// * @return 映射规则详情包装对象
// */
// @GetMapping("/{ruleId}")
// @Operation(summary = "获取映射规则详情", description = "根据ID获取映射规则的详细信息")
// public Wrapper<MapperRuleVO> getRule(
// @Parameter(description = "规则ID", required = true)
// @PathVariable String ruleId) {
// try {
// MapperRuleVO result = mapperRuleService.getById(ruleId);
// return WrapMapper.ok(result, "获取映射规则详情成功");
// } catch (BusinessException e) {
// log.error("获取映射规则详情失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("获取映射规则详情异常: {}", e.getMessage(), e);
// return WrapMapper.fail("获取映射规则详情失败");
// }
// }
//
// /**
// * 分页查询映射规则列表
// *
// * @param pageNumber 页码
// * @param pageSize 每页大小
// * @return 分页结果包装对象
// */
// @GetMapping("/page")
// @Operation(summary = "分页查询映射规则", description = "分页查询映射规则列表")
// public Wrapper<Page<MapperRuleVO>> pageList(
// @Parameter(description = "页码", example = "1")
// @RequestParam(defaultValue = "1") Integer pageNumber,
// @Parameter(description = "每页大小", example = "10")
// @RequestParam(defaultValue = "10") Integer pageSize) {
// try {
// Page<MapperRuleVO> result = mapperRuleService.pageList(pageNumber, pageSize);
// return WrapMapper.ok(result, "查询映射规则列表成功");
// } catch (Exception e) {
// log.error("查询映射规则列表异常: {}", e.getMessage(), e);
// return WrapMapper.fail("查询映射规则列表失败");
// }
// }
//
// /**
// * 获取所有映射规则列表
// *
// * @return 映射规则列表包装对象
// */
// @GetMapping("/list")
// @Operation(summary = "获取所有映射规则", description = "获取所有映射规则的列表")
// public Wrapper<List<MapperRuleVO>> listAll() {
// try {
// List<MapperRuleVO> result = mapperRuleService.listAll();
// return WrapMapper.ok(result, "获取所有映射规则成功");
// } catch (Exception e) {
// log.error("获取所有映射规则异常: {}", e.getMessage(), e);
// return WrapMapper.fail("获取所有映射规则失败");
// }
// }
//
// /**
// * 启用映射规则
// *
// * @param ruleId 规则ID
// * @return 操作结果包装对象
// */
// @PostMapping("/{ruleId}/enable")
// @Operation(summary = "启用映射规则", description = "启用指定的映射规则")
// public Wrapper<MapperRuleVO> enableRule(
// @Parameter(description = "规则ID", required = true)
// @PathVariable String ruleId) {
// try {
// mapperRuleService.enable(ruleId);
// MapperRuleVO result = mapperRuleService.getById(ruleId);
// return WrapMapper.ok(result, "映射规则启用成功");
// } catch (BusinessException e) {
// log.error("映射规则启用失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("映射规则启用异常: {}", e.getMessage(), e);
// return WrapMapper.fail("映射规则启用失败");
// }
// }
//
// /**
// * 禁用映射规则
// *
// * @param ruleId 规则ID
// * @return 操作结果包装对象
// */
// @PostMapping("/{ruleId}/disable")
// @Operation(summary = "禁用映射规则", description = "禁用指定的映射规则")
// public Wrapper<MapperRuleVO> disableRule(
// @Parameter(description = "规则ID", required = true)
// @PathVariable String ruleId) {
// try {
// mapperRuleService.disable(ruleId);
// MapperRuleVO result = mapperRuleService.getById(ruleId);
// return WrapMapper.ok(result, "映射规则禁用成功");
// } catch (BusinessException e) {
// log.error("映射规则禁用失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("映射规则禁用异常: {}", e.getMessage(), e);
// return WrapMapper.fail("映射规则禁用失败");
// }
// }
//}
package com.example.demo.parser.controller;
import cn.zhxu.bs.SearchResult;
import com.example.demo.common.wrapper.WrapMapper;
import com.example.demo.common.wrapper.Wrapper;
import com.example.demo.common.exception.BusinessException;
import com.example.demo.parser.model.dto.MapperRuleDTO;
import com.example.demo.parser.model.dto.MapperRuleQueryDTO;
import com.example.demo.parser.model.vo.MapperRuleVO;
import com.example.demo.parser.service.MapperRuleService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 映射规则控制器
* 提供XML映射规则管理的RESTful API接口
*
* @author 岳佳君 (2025年09月25日 16:30:00)
* @version 1.0.0
*/
@Slf4j
@RestController
@RequestMapping("/parser/mapper-rules")
@RequiredArgsConstructor
@Tag(name = "映射规则管理", description = "提供XML映射规则管理的接口")
public class MapperRuleController {
private final MapperRuleService mapperRuleService;
/**
* 创建映射规则
*
* @param rule 映射规则数据
* @return 操作结果包装对象
*/
@PostMapping
@Operation(summary = "创建映射规则", description = "创建新的映射规则")
public Wrapper<MapperRuleVO> createRule(
@Parameter(description = "映射规则数据", required = true)
@RequestBody MapperRuleDTO rule) {
try {
MapperRuleVO result = mapperRuleService.create(rule);
return WrapMapper.ok(result, "映射规则创建成功");
} catch (BusinessException e) {
log.error("映射规则创建失败: {}", e.getMessage(), e);
return WrapMapper.fail(e.getMessage());
} catch (Exception e) {
log.error("映射规则创建异常: {}", e.getMessage(), e);
return WrapMapper.fail("映射规则创建失败");
}
}
/**
* 更新映射规则
*
* @param rule 映射规则数据
* @return 操作结果包装对象
*/
@PutMapping("/{ruleId}")
@Operation(summary = "更新映射规则", description = "更新指定的映射规则")
public Wrapper<MapperRuleVO> updateRule(
@Parameter(description = "映射规则数据", required = true)
@RequestBody MapperRuleDTO rule) {
try {
mapperRuleService.update(rule);
MapperRuleVO result = mapperRuleService.detail(rule.getId());
return WrapMapper.ok(result, "映射规则更新成功");
} catch (BusinessException e) {
log.error("映射规则更新失败: {}", e.getMessage(), e);
return WrapMapper.fail(e.getMessage());
} catch (Exception e) {
log.error("映射规则更新异常: {}", e.getMessage(), e);
return WrapMapper.fail("映射规则更新失败");
}
}
/**
* 删除映射规则
*
* @param ruleId 规则ID
* @return 操作结果包装对象
*/
@DeleteMapping("/{ruleId}")
@Operation(summary = "删除映射规则", description = "删除指定的映射规则")
public Wrapper<Void> deleteRule(
@Parameter(description = "规则ID", required = true)
@PathVariable String ruleId) {
try {
mapperRuleService.delete(ruleId);
return WrapMapper.ok(null, "映射规则删除成功");
} catch (BusinessException e) {
log.error("映射规则删除失败: {}", e.getMessage(), e);
return WrapMapper.fail(e.getMessage());
} catch (Exception e) {
log.error("映射规则删除异常: {}", e.getMessage(), e);
return WrapMapper.fail("映射规则删除失败");
}
}
/**
* 获取映射规则详情
*
* @param ruleId 规则ID
* @return 映射规则详情包装对象
*/
@GetMapping("/{ruleId}")
@Operation(summary = "获取映射规则详情", description = "根据ID获取映射规则的详细信息")
public Wrapper<MapperRuleVO> getRule(
@Parameter(description = "规则ID", required = true)
@PathVariable String ruleId) {
try {
MapperRuleVO result = mapperRuleService.detail(ruleId);
return WrapMapper.ok(result, "获取映射规则详情成功");
} catch (BusinessException e) {
log.error("获取映射规则详情失败: {}", e.getMessage(), e);
return WrapMapper.fail(e.getMessage());
} catch (Exception e) {
log.error("获取映射规则详情异常: {}", e.getMessage(), e);
return WrapMapper.fail("获取映射规则详情失败");
}
}
/**
* 分页查询映射规则列表
*
* @param queryDTO 查询封装对象
* @return 分页结果包装对象
*/
@GetMapping("/page")
@Operation(summary = "分页查询映射规则", description = "分页查询映射规则列表")
public Wrapper<SearchResult<MapperRuleVO>> pageList(
@Parameter(description = "映射规则QueryDTO数据", required = true)
@RequestBody MapperRuleQueryDTO queryDTO) {
try {
SearchResult<MapperRuleVO> result = mapperRuleService.pageList(queryDTO);
return WrapMapper.ok(result);
} catch (Exception e) {
log.error("查询映射规则列表异常: {}", e.getMessage(), e);
return WrapMapper.fail("查询映射规则列表失败");
}
}
/**
* 获取所有映射规则列表
*
* @return 映射规则列表包装对象
*/
@GetMapping("/options")
@Operation(summary = "获取所有映射规则", description = "获取所有映射规则的列表")
public Wrapper<List<MapperRuleVO>> options(
@Parameter(description = "映射规则QueryDTO数据", required = true)
@RequestBody MapperRuleQueryDTO queryDTO) {
try {
List<MapperRuleVO> result = mapperRuleService.option(queryDTO);
return WrapMapper.ok(result, "获取所有映射规则成功");
} catch (Exception e) {
log.error("获取所有映射规则异常: {}", e.getMessage(), e);
return WrapMapper.fail("获取所有映射规则失败");
}
}
}

View File

@ -1,219 +1,170 @@
//package com.example.demo.parser.controller;
//
//import com.example.demo.common.wrapper.WrapMapper;
//import com.example.demo.common.wrapper.Wrapper;
//import com.example.demo.common.exception.BusinessException;
//import com.example.demo.parser.model.dto.ParseRuleDTO;
//import com.example.demo.parser.model.vo.ParseRuleVO;
//import com.example.demo.parser.service.ParseRuleService;
//import com.mybatisflex.core.paginate.Page;
//import io.swagger.v3.oas.annotations.Operation;
//import io.swagger.v3.oas.annotations.Parameter;
//import io.swagger.v3.oas.annotations.tags.Tag;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.List;
//
///**
// * 解析规则控制器
// * 提供XML解析规则管理的RESTful API接口
// *
// * @author 岳佳君 (2025年09月25日 16:30:00)
// * @version 1.0.0
// */
//@Slf4j
//@RestController
//@RequestMapping("/parser/rules")
//@RequiredArgsConstructor
//@Tag(name = "解析规则管理", description = "提供XML解析规则管理的接口")
//public class ParseRuleController {
//
// private final ParseRuleService parseRuleService;
//
// /**
// * 创建解析规则
// *
// * @param rule 解析规则数据
// * @return 操作结果包装对象
// */
// @PostMapping
// @Operation(summary = "创建解析规则", description = "创建新的解析规则")
// public Wrapper<ParseRuleVO> createRule(
// @Parameter(description = "解析规则数据", required = true)
// @RequestBody ParseRuleDTO rule) {
// try {
// String ruleId = parseRuleService.create(rule);
// ParseRuleVO result = parseRuleService.getById(ruleId);
// return WrapMapper.ok(result, "解析规则创建成功");
// } catch (BusinessException e) {
// log.error("解析规则创建失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("解析规则创建异常: {}", e.getMessage(), e);
// return WrapMapper.fail("解析规则创建失败");
// }
// }
//
// /**
// * 更新解析规则
// *
// * @param ruleId 规则ID
// * @param rule 解析规则数据
// * @return 操作结果包装对象
// */
// @PutMapping("/{ruleId}")
// @Operation(summary = "更新解析规则", description = "更新指定的解析规则")
// public Wrapper<ParseRuleVO> updateRule(
// @Parameter(description = "规则ID", required = true)
// @PathVariable String ruleId,
// @Parameter(description = "解析规则数据", required = true)
// @RequestBody ParseRuleDTO rule) {
// try {
// parseRuleService.update(ruleId, rule);
// ParseRuleVO result = parseRuleService.getById(ruleId);
// return WrapMapper.ok(result, "解析规则更新成功");
// } catch (BusinessException e) {
// log.error("解析规则更新失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("解析规则更新异常: {}", e.getMessage(), e);
// return WrapMapper.fail("解析规则更新失败");
// }
// }
//
// /**
// * 删除解析规则
// *
// * @param ruleId 规则ID
// * @return 操作结果包装对象
// */
// @DeleteMapping("/{ruleId}")
// @Operation(summary = "删除解析规则", description = "删除指定的解析规则")
// public Wrapper<Void> deleteRule(
// @Parameter(description = "规则ID", required = true)
// @PathVariable String ruleId) {
// try {
// parseRuleService.delete(ruleId);
// return WrapMapper.ok(null, "解析规则删除成功");
// } catch (BusinessException e) {
// log.error("解析规则删除失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("解析规则删除异常: {}", e.getMessage(), e);
// return WrapMapper.fail("解析规则删除失败");
// }
// }
//
// /**
// * 获取解析规则详情
// *
// * @param ruleId 规则ID
// * @return 解析规则详情包装对象
// */
// @GetMapping("/{ruleId}")
// @Operation(summary = "获取解析规则详情", description = "根据ID获取解析规则的详细信息")
// public Wrapper<ParseRuleVO> getRule(
// @Parameter(description = "规则ID", required = true)
// @PathVariable String ruleId) {
// try {
// ParseRuleVO result = parseRuleService.getById(ruleId);
// return WrapMapper.ok(result, "获取解析规则详情成功");
// } catch (BusinessException e) {
// log.error("获取解析规则详情失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("获取解析规则详情异常: {}", e.getMessage(), e);
// return WrapMapper.fail("获取解析规则详情失败");
// }
// }
//
// /**
// * 分页查询解析规则列表
// *
// * @param pageNumber 页码
// * @param pageSize 每页大小
// * @return 分页结果包装对象
// */
// @GetMapping("/page")
// @Operation(summary = "分页查询解析规则", description = "分页查询解析规则列表")
// public Wrapper<Page<ParseRuleVO>> pageList(
// @Parameter(description = "页码", example = "1")
// @RequestParam(defaultValue = "1") Integer pageNumber,
// @Parameter(description = "每页大小", example = "10")
// @RequestParam(defaultValue = "10") Integer pageSize) {
// try {
// Page<ParseRuleVO> result = parseRuleService.pageList(pageNumber, pageSize);
// return WrapMapper.ok(result, "查询解析规则列表成功");
// } catch (Exception e) {
// log.error("查询解析规则列表异常: {}", e.getMessage(), e);
// return WrapMapper.fail("查询解析规则列表失败");
// }
// }
//
// /**
// * 获取所有解析规则列表
// *
// * @return 解析规则列表包装对象
// */
// @GetMapping("/list")
// @Operation(summary = "获取所有解析规则", description = "获取所有解析规则的列表")
// public Wrapper<List<ParseRuleVO>> listAll() {
// try {
// List<ParseRuleVO> result = parseRuleService.listAll();
// return WrapMapper.ok(result, "获取所有解析规则成功");
// } catch (Exception e) {
// log.error("获取所有解析规则异常: {}", e.getMessage(), e);
// return WrapMapper.fail("获取所有解析规则失败");
// }
// }
//
// /**
// * 启用解析规则
// *
// * @param ruleId 规则ID
// * @return 操作结果包装对象
// */
// @PostMapping("/{ruleId}/enable")
// @Operation(summary = "启用解析规则", description = "启用指定的解析规则")
// public Wrapper<ParseRuleVO> enableRule(
// @Parameter(description = "规则ID", required = true)
// @PathVariable String ruleId) {
// try {
// parseRuleService.enable(ruleId);
// ParseRuleVO result = parseRuleService.getById(ruleId);
// return WrapMapper.ok(result, "解析规则启用成功");
// } catch (BusinessException e) {
// log.error("解析规则启用失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("解析规则启用异常: {}", e.getMessage(), e);
// return WrapMapper.fail("解析规则启用失败");
// }
// }
//
// /**
// * 禁用解析规则
// *
// * @param ruleId 规则ID
// * @return 操作结果包装对象
// */
// @PostMapping("/{ruleId}/disable")
// @Operation(summary = "禁用解析规则", description = "禁用指定的解析规则")
// public Wrapper<ParseRuleVO> disableRule(
// @Parameter(description = "规则ID", required = true)
// @PathVariable String ruleId) {
// try {
// parseRuleService.disable(ruleId);
// ParseRuleVO result = parseRuleService.getById(ruleId);
// return WrapMapper.ok(result, "解析规则禁用成功");
// } catch (BusinessException e) {
// log.error("解析规则禁用失败: {}", e.getMessage(), e);
// return WrapMapper.fail(e.getMessage());
// } catch (Exception e) {
// log.error("解析规则禁用异常: {}", e.getMessage(), e);
// return WrapMapper.fail("解析规则禁用失败");
// }
// }
//}
package com.example.demo.parser.controller;
import cn.zhxu.bs.SearchResult;
import com.example.demo.common.wrapper.WrapMapper;
import com.example.demo.common.wrapper.Wrapper;
import com.example.demo.common.exception.BusinessException;
import com.example.demo.parser.model.dto.ParseRuleDTO;
import com.example.demo.parser.model.dto.ParseRuleQueryDTO;
import com.example.demo.parser.model.vo.ParseRuleVO;
import com.example.demo.parser.service.ParseRuleService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 解析规则控制器
* 提供XML解析规则管理的RESTful API接口
*
* @author 岳佳君 (2025年09月25日 16:30:00)
* @version 1.0.0
*/
@Slf4j
@RestController
@RequestMapping("/parser/rules")
@RequiredArgsConstructor
@Tag(name = "解析规则管理", description = "提供XML解析规则管理的接口")
public class ParseRuleController {
private final ParseRuleService parseRuleService;
/**
* 创建解析规则
*
* @param rule 解析规则数据
* @return 操作结果包装对象
*/
@PostMapping
@Operation(summary = "创建解析规则", description = "创建新的解析规则")
public Wrapper<ParseRuleVO> createRule(
@Parameter(description = "解析规则数据", required = true)
@RequestBody ParseRuleDTO rule) {
try {
ParseRuleVO result = parseRuleService.create(rule);
return WrapMapper.ok(result, "解析规则创建成功");
} catch (BusinessException e) {
log.error("解析规则创建失败: {}", e.getMessage(), e);
return WrapMapper.fail(e.getMessage());
} catch (Exception e) {
log.error("解析规则创建异常: {}", e.getMessage(), e);
return WrapMapper.fail("解析规则创建失败");
}
}
/**
* 更新解析规则
*
* @param rule 解析规则数据
* @return 操作结果包装对象
*/
@PutMapping("/{ruleId}")
@Operation(summary = "更新解析规则", description = "更新指定的解析规则")
public Wrapper<ParseRuleVO> updateRule(
@Parameter(description = "解析规则数据", required = true)
@RequestBody ParseRuleDTO rule) {
try {
parseRuleService.update(rule);
ParseRuleVO result = parseRuleService.detail(rule.getId());
return WrapMapper.ok(result, "解析规则更新成功");
} catch (BusinessException e) {
log.error("解析规则更新失败: {}", e.getMessage(), e);
return WrapMapper.fail(e.getMessage());
} catch (Exception e) {
log.error("解析规则更新异常: {}", e.getMessage(), e);
return WrapMapper.fail("解析规则更新失败");
}
}
/**
* 删除解析规则
*
* @param ruleId 规则ID
* @return 操作结果包装对象
*/
@DeleteMapping("/{ruleId}")
@Operation(summary = "删除解析规则", description = "删除指定的解析规则")
public Wrapper<Void> deleteRule(
@Parameter(description = "规则ID", required = true)
@PathVariable String ruleId) {
try {
parseRuleService.delete(ruleId);
return WrapMapper.ok(null, "解析规则删除成功");
} catch (BusinessException e) {
log.error("解析规则删除失败: {}", e.getMessage(), e);
return WrapMapper.fail(e.getMessage());
} catch (Exception e) {
log.error("解析规则删除异常: {}", e.getMessage(), e);
return WrapMapper.fail("解析规则删除失败");
}
}
/**
* 获取解析规则详情
*
* @param ruleId 规则ID
* @return 解析规则详情包装对象
*/
@GetMapping("/{ruleId}")
@Operation(summary = "获取解析规则详情", description = "根据ID获取解析规则的详细信息")
public Wrapper<ParseRuleVO> getRule(
@Parameter(description = "规则ID", required = true)
@PathVariable String ruleId) {
try {
ParseRuleVO result = parseRuleService.detail(ruleId);
return WrapMapper.ok(result, "获取解析规则详情成功");
} catch (BusinessException e) {
log.error("获取解析规则详情失败: {}", e.getMessage(), e);
return WrapMapper.fail(e.getMessage());
} catch (Exception e) {
log.error("获取解析规则详情异常: {}", e.getMessage(), e);
return WrapMapper.fail("获取解析规则详情失败");
}
}
/**
* 分页查询解析规则列表
*
* @param queryDTO 查询封装对象
* @return 分页结果包装对象
*/
@GetMapping("/page")
@Operation(summary = "分页查询解析规则", description = "分页查询解析规则列表")
public Wrapper<SearchResult<ParseRuleVO>> pageList(
@Parameter(description = "解析规则QueryDTO数据", required = true)
@RequestBody ParseRuleQueryDTO queryDTO) {
try {
SearchResult<ParseRuleVO> result = parseRuleService.pageList(queryDTO);
return WrapMapper.ok(result);
} catch (Exception e) {
log.error("查询解析规则列表异常: {}", e.getMessage(), e);
return WrapMapper.fail("查询解析规则列表失败");
}
}
/**
* 获取所有解析规则列表
*
* @param queryDTO 查询封装对象
* @return 解析规则列表包装对象
*/
@GetMapping("/options")
@Operation(summary = "获取所有解析规则", description = "获取所有解析规则的列表")
public Wrapper<List<ParseRuleVO>> options(
@Parameter(description = "解析规则QueryDTO数据", required = true)
@RequestBody ParseRuleQueryDTO queryDTO) {
try {
List<ParseRuleVO> result = parseRuleService.option(queryDTO);
return WrapMapper.ok(result, "获取所有解析规则成功");
} catch (Exception e) {
log.error("获取所有解析规则异常: {}", e.getMessage(), e);
return WrapMapper.fail("获取所有解析规则失败");
}
}
}

View File

@ -71,7 +71,7 @@ public class FileRecordDTO extends BaseDTO implements Serializable {
*/
@Schema(description = "文件状态")
@DbField("status")
private Integer status;
private String status;
/**
* 上传时间开始