package com.inspur.source.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.util.ObjectUtil; import com.inspur.device.domain.vo.DeviceAlarmNumTopVo; import com.inspur.source.domain.bo.SmsbMinioDataBo; import com.inspur.source.domain.vo.DashBoardPlayVo; import com.inspur.source.domain.vo.DiskUseVo; import com.inspur.source.domain.vo.FileStatisticsVo; import com.inspur.source.domain.vo.SmsbMinioDataVo; import com.inspur.source.service.ISmsbMinioDataService; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.system.domain.vo.SysOssUploadVo; import org.dromara.system.domain.vo.SysOssVo; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.List; /** * 文件资源 * * @author Hao Li * @date 2025-02-07 */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/source/minioData") public class SmsbMinioDataController extends BaseController { private final ISmsbMinioDataService smsbMinioDataService; /** * 查询文件资源列表 */ @SaCheckPermission("source:minioData:list") @GetMapping("/list") public TableDataInfo list(SmsbMinioDataBo bo, PageQuery pageQuery) { return smsbMinioDataService.queryPageList(bo, pageQuery); } /** * 导出文件资源列表 */ @SaCheckPermission("source:minioData:export") @Log(title = "文件资源", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(SmsbMinioDataBo bo, HttpServletResponse response) { List list = smsbMinioDataService.queryList(bo); ExcelUtil.exportExcel(list, "文件资源", SmsbMinioDataVo.class, response); } /** * 获取文件资源详细信息 * * @param id 主键 */ @SaCheckPermission("source:minioData:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { return R.ok(smsbMinioDataService.queryById(id)); } /** * 上传OSS对象存储 * * @param file 文件 */ @Log(title = "OSS对象存储", businessType = BusinessType.INSERT) @PostMapping(value = "/upload/smsb", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R uploadSmsb(@RequestPart("file") MultipartFile file) { if (ObjectUtil.isNull(file)) { return R.fail("上传文件不能为空"); } SysOssVo oss = smsbMinioDataService.uploadSmsb(file); if (null == oss) { return R.fail("上传失败,已存在相同文件"); } SysOssUploadVo uploadVo = new SysOssUploadVo(); uploadVo.setUrl(oss.getUrl()); uploadVo.setFileName(oss.getOriginalName()); uploadVo.setOssId(oss.getOssId().toString()); return R.ok(uploadVo); } /** * 新增文件资源 */ @SaCheckPermission("source:minioData:add") @Log(title = "文件资源", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public R add(@Validated(AddGroup.class) @RequestBody SmsbMinioDataBo bo) { return toAjax(smsbMinioDataService.insertByBo(bo)); } /** * 修改文件资源 */ @SaCheckPermission("source:minioData:edit") @Log(title = "文件资源", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody SmsbMinioDataBo bo) { return toAjax(smsbMinioDataService.updateByBo(bo)); } /** * 删除文件资源 * * @param ids 主键串 */ @SaCheckPermission("source:minioData:remove") @Log(title = "文件资源", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { return toAjax(smsbMinioDataService.deleteWithValidByIds(List.of(ids), true)); } /** * 获取文件资源数量统计 by type * */ @GetMapping("/statistics") public R fileStatistics() { return R.ok(smsbMinioDataService.fileStatistics()); } /** * 播放统计 资源数量统计 by tag * */ @GetMapping("/statistics/byTag") public R fileStatisticsByTag() { return R.ok(smsbMinioDataService.fileStatisticsByTag()); } /** *播放统计 资源数量统计 by type and tag * */ @GetMapping("/statistics/byTypeAndTag") public R fileStatisticsByTypeAndTag() { return R.ok(smsbMinioDataService.fileStatisticsByTypeAndTag()); } /** * 播放统计-内容新增折线图 * @param startTime * @param endTime * @return */ @GetMapping("/dashboard/play/numLine") public R numLine(@RequestParam String startTime, @RequestParam String endTime) { return R.ok(smsbMinioDataService.numLine(startTime, endTime)); } /** * 播放统计-存储空间使用情况 * @return */ @GetMapping("/dashboard/disk/use") public R diskUse() { return R.ok(smsbMinioDataService.diskUse()); } }