ChartController.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package space.anyi.BI.controller;
  2. import cn.hutool.core.util.IdUtil;
  3. import cn.hutool.poi.excel.ExcelUtil;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.web.bind.annotation.*;
  9. import org.springframework.web.multipart.MultipartFile;
  10. import space.anyi.BI.BIApplication;
  11. import space.anyi.BI.entity.Chart;
  12. import space.anyi.BI.entity.ResponseResult;
  13. import space.anyi.BI.entity.dto.ChartDTO;
  14. import space.anyi.BI.entity.vo.ChartVO;
  15. import space.anyi.BI.entity.vo.PageVO;
  16. import space.anyi.BI.service.ChartService;
  17. import space.anyi.BI.util.BeanCopyUtil;
  18. import space.anyi.BI.util.SecurityUtils;
  19. import javax.annotation.Resource;
  20. import java.io.IOException;
  21. import java.util.ArrayList;
  22. import java.util.List;
  23. /**
  24. * @ProjectName: BI
  25. * @FileName: ChartController
  26. * @Author: 杨逸
  27. * @Data:2024/11/28 19:53
  28. * @Description:
  29. */
  30. @Controller()
  31. @RequestMapping("/chart")
  32. public class ChartController {
  33. private final static Logger log = LoggerFactory.getLogger(ChartController.class);
  34. @Resource
  35. private ChartService chartService;
  36. @GetMapping("/getChartById/{id}")
  37. @ResponseBody
  38. public ResponseResult getChartById(@PathVariable("id") Long id){
  39. Chart chart = chartService.getById(id);
  40. return ResponseResult.okResult(chart);
  41. }
  42. @PostMapping("/add")
  43. @ResponseBody
  44. public ResponseResult addChart(@RequestBody Chart chart){
  45. long id = IdUtil.getSnowflake(1, 1).nextId();
  46. chart.setId(id);
  47. Long userId = SecurityUtils.getUserId();
  48. chart.setUserId(userId);
  49. chartService.save(chart);
  50. return ResponseResult.okResult();
  51. }
  52. @DeleteMapping("/{ids}")
  53. @ResponseBody
  54. public ResponseResult deleteChartById(@PathVariable List<Long> ids){
  55. chartService.removeByIds(ids);
  56. return ResponseResult.okResult();
  57. }
  58. @PutMapping("/update")
  59. @ResponseBody
  60. public ResponseResult updateChart(@RequestBody Chart chart){
  61. chartService.updateById(chart);
  62. return ResponseResult.okResult();
  63. }
  64. @GetMapping("/list")
  65. @ResponseBody
  66. public ResponseResult page(Integer pageNum,Integer pageSize){
  67. Page<Chart> page = chartService.page(new Page<Chart>(pageNum, pageSize));
  68. List<ChartVO> voList = new ArrayList<>();
  69. for (Chart chart : page.getRecords()) {
  70. ChartVO chartVO = BeanCopyUtil.copyBean(chart, ChartVO.class);
  71. chartVO.setId(chart.getId().toString());
  72. chartVO.setUserId(chart.getUserId().toString());
  73. voList.add(chartVO);
  74. }
  75. PageVO pageVO = new PageVO(voList, page.getTotal());
  76. return ResponseResult.okResult(pageVO);
  77. }
  78. @PostMapping("/generateChartByAI")
  79. @ResponseBody
  80. public ResponseResult generateChartByAI(ChartDTO chartDTO, MultipartFile file) throws IOException {
  81. log.info("分析目标:{}图标名称:{}",chartDTO.getAnalysisTarget(),chartDTO.getName());
  82. if (file == null || file.isEmpty()) {
  83. return ResponseResult.errorResult(ResponseResult.AppHttpCodeEnum.FILE_NOT_NULL);
  84. }
  85. //文件类判断
  86. if (!file.getContentType().equals("application/vnd.ms-excel") && !file.getContentType().equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) {
  87. return ResponseResult.errorResult(ResponseResult.AppHttpCodeEnum.FILE_TYPE_ERROR);
  88. }
  89. ChartVO vo = chartService.generateChartByAI(chartDTO,file);
  90. return ResponseResult.okResult(vo);
  91. }
  92. @ExceptionHandler({IOException.class})
  93. private ResponseResult exceptionHandler(){
  94. return ResponseResult.errorResult(ResponseResult.AppHttpCodeEnum.FILE_ERROR);
  95. }
  96. }