Parcourir la source

菜单版本管理模块相关接口

bmmx il y a 1 an
Parent
commit
ab50cd3367

+ 6 - 0
src/main/java/com/om/constant/UploadConstant.java

@@ -0,0 +1,6 @@
+package com.om.constant;
+
+public class UploadConstant {
+
+    public static final String DIAGNOSTIC_MENU_PREFIX = "diagnosisMenu";
+}

+ 65 - 0
src/main/java/com/om/controller/admin/DiagnosticMenuController.java

@@ -0,0 +1,65 @@
+package com.om.controller.admin;
+
+
+import com.om.entity.dto.DiaMenuQueryPageDTO;
+import com.om.entity.dto.DiagnosticMenuDTO;
+import com.om.entity.vo.DiaMenuQueryPageVO;
+import com.om.entity.vo.DiaMenuUploadVO;
+import com.om.service.IDiagnosticMenuService;
+import com.om.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-03-05
+ */
+@RestController
+@Api(tags = "诊断菜单相关接口")
+@RequestMapping("/web/diagnostic-menu")
+public class DiagnosticMenuController {
+
+    @Resource
+    private IDiagnosticMenuService diagnosticMenuService;
+
+    @PostMapping("create")
+    @ApiOperation("新增诊断菜单")
+    public Result createDiaMenu(@RequestBody DiagnosticMenuDTO dto){
+        return diagnosticMenuService.createDiaMenu(dto);
+    }
+
+    @PostMapping("upload")
+    @ApiOperation("上传诊断菜单文件")
+    public Result<DiaMenuUploadVO> uploadDiaMenu(MultipartFile file){
+        return diagnosticMenuService.uploadDiaMenu(file);
+    }
+
+    @GetMapping("delete")
+    @ApiOperation("根据id删除诊断菜单文件")
+    public Result deleteDiaMenu(@RequestParam Integer id){
+        return diagnosticMenuService.deleteDiaMenu(id);
+    }
+
+    @GetMapping("updateStatus")
+    @ApiOperation("修改诊断菜单")
+    public Result updateStatus(@RequestParam("id") Integer id,@RequestParam("status") Integer status){
+        return diagnosticMenuService.updateStatus(id,status);
+    }
+
+    @PostMapping("getPageList")
+    @ApiOperation("分页查询诊断菜单列表")
+    public Result<DiaMenuQueryPageVO> getPageList(@RequestBody DiaMenuQueryPageDTO dto){
+        return diagnosticMenuService.getPageList(dto);
+    }
+
+
+}

+ 21 - 0
src/main/java/com/om/entity/dto/DiaMenuQueryPageDTO.java

@@ -0,0 +1,21 @@
+package com.om.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class DiaMenuQueryPageDTO {
+    @ApiModelProperty(value = "当前页码")
+    private Integer pageIndex;
+
+    @ApiModelProperty(value = "每个页码的大小")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "搜索字段---搜索文件名")
+    private String fileName;
+
+    @ApiModelProperty(value = "搜索字段---搜索版本号")
+    private String versionNum;
+}

+ 47 - 0
src/main/java/com/om/entity/dto/DiagnosticMenuDTO.java

@@ -0,0 +1,47 @@
+package com.om.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-03-05
+ */
+@Data
+@NoArgsConstructor
+public class DiagnosticMenuDTO implements Serializable {
+
+
+    @ApiModelProperty(value = "客户端菜单主键")
+    private Integer id;
+
+    @ApiModelProperty(value = "菜单文件名")
+    private String fileName;
+
+    @ApiModelProperty(value = "菜单文件大小")
+    private String fileSize;
+
+    @ApiModelProperty(value = "菜单版本号")
+    private String versionNum;
+
+    @ApiModelProperty(value = "中文菜单")
+    private String menuCn;
+
+    @ApiModelProperty(value = "英文菜单")
+    private String menuEn;
+
+    @ApiModelProperty(value = "菜单保存路径")
+    private String savePath;
+
+    @ApiModelProperty(value = "客户端id集合")
+    private String clientIds;
+
+
+}

+ 68 - 0
src/main/java/com/om/entity/po/DiagnosticMenu.java

@@ -0,0 +1,68 @@
+package com.om.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-03-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("diagnostic_menu")
+@ApiModel(value="DiagnosticMenu对象", description="")
+public class DiagnosticMenu implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "客户端菜单主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "菜单文件名")
+    private String fileName;
+
+    @ApiModelProperty(value = "菜单文件大小")
+    private String fileSize;
+
+    @ApiModelProperty(value = "菜单版本号")
+    private String versionNum;
+
+    @ApiModelProperty(value = "中文菜单")
+    private String menuCn;
+
+    @ApiModelProperty(value = "英文菜单")
+    private String menuEn;
+
+    @ApiModelProperty(value = "菜单状态")
+    private Integer enableStatus = 0;
+
+    @ApiModelProperty(value = "菜单保存路径")
+    private String savePath;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "修改时间")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "客户端id集合")
+    private String clientIds;
+
+
+}

+ 68 - 0
src/main/java/com/om/entity/po/DiagnosticMenuVO.java

@@ -0,0 +1,68 @@
+package com.om.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-03-05
+ */
+@Data
+@NoArgsConstructor
+public class DiagnosticMenuVO implements Serializable {
+
+
+
+    @ApiModelProperty(value = "客户端菜单主键")
+    private Integer id;
+
+    @ApiModelProperty(value = "菜单文件名")
+    private String fileName;
+
+    @ApiModelProperty(value = "菜单文件大小")
+    private String fileSize;
+
+    @ApiModelProperty(value = "菜单版本号")
+    private String versionNum;
+
+    @ApiModelProperty(value = "中文菜单")
+    private String menuCn;
+
+    @ApiModelProperty(value = "英文菜单")
+    private String menuEn;
+
+    @ApiModelProperty(value = "菜单状态")
+    private Integer enableStatus = 0;
+
+    @ApiModelProperty(value = "菜单保存路径")
+    private String savePath;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "修改时间")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "客户端名称集合")
+    private List<String> clientNames;
+
+    @ApiModelProperty(value = "客户端编号集合")
+    private List<String> clientNums;
+
+
+}

+ 32 - 0
src/main/java/com/om/entity/vo/DiaMenuQueryPageVO.java

@@ -0,0 +1,32 @@
+package com.om.entity.vo;
+
+import com.om.entity.po.DiagnosticMenuVO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+public class DiaMenuQueryPageVO {
+
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    @ApiModelProperty(value = "总页码")
+    private Integer pages;
+
+    @ApiModelProperty(value = "每个页码的大小")
+    private Integer size;
+
+    @ApiModelProperty(value = "总数量")
+    private Integer total;
+
+    @ApiModelProperty(value = "是否是查询")
+    private Boolean searchCount = false;
+
+    @ApiModelProperty(value = "结果集")
+    private List<DiagnosticMenuVO> records;
+
+}

+ 21 - 0
src/main/java/com/om/entity/vo/DiaMenuUploadVO.java

@@ -0,0 +1,21 @@
+package com.om.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+public class DiaMenuUploadVO implements Serializable {
+
+    @ApiModelProperty(value = "菜单文件名")
+    private String fileName;
+
+    @ApiModelProperty(value = "菜单文件大小")
+    private String fileSize;
+
+    @ApiModelProperty(value = "菜单保存路径")
+    private String savePath;
+}

+ 16 - 0
src/main/java/com/om/mapper/DiagnosticMenuMapper.java

@@ -0,0 +1,16 @@
+package com.om.mapper;
+
+import com.om.entity.po.DiagnosticMenu;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-03-05
+ */
+public interface DiagnosticMenuMapper extends BaseMapper<DiagnosticMenu> {
+
+}

+ 31 - 0
src/main/java/com/om/service/IDiagnosticMenuService.java

@@ -0,0 +1,31 @@
+package com.om.service;
+
+import com.om.entity.dto.DiaMenuQueryPageDTO;
+import com.om.entity.dto.DiagnosticMenuDTO;
+import com.om.entity.po.DiagnosticMenu;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.om.entity.vo.DiaMenuQueryPageVO;
+import com.om.entity.vo.DiaMenuUploadVO;
+import com.om.utils.Result;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-03-05
+ */
+public interface IDiagnosticMenuService extends IService<DiagnosticMenu> {
+
+    Result createDiaMenu(DiagnosticMenuDTO dto);
+
+    Result<DiaMenuUploadVO> uploadDiaMenu(MultipartFile file);
+
+    Result deleteDiaMenu(Integer id);
+
+    Result updateStatus(Integer id, Integer status);
+
+    Result<DiaMenuQueryPageVO> getPageList(DiaMenuQueryPageDTO dto);
+}

+ 170 - 0
src/main/java/com/om/service/impl/DiagnosticMenuServiceImpl.java

@@ -0,0 +1,170 @@
+package com.om.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.om.entity.dto.DiaMenuQueryPageDTO;
+import com.om.entity.dto.DiagnosticMenuDTO;
+import com.om.entity.po.Client;
+import com.om.entity.po.DiagnosticMenu;
+import com.om.entity.po.DiagnosticMenuVO;
+import com.om.entity.po.Distributor;
+import com.om.entity.vo.DiaMenuQueryPageVO;
+import com.om.entity.vo.DiaMenuUploadVO;
+import com.om.entity.vo.DistributorQueryPageVO;
+import com.om.exception.BadReqException;
+import com.om.mapper.DiagnosticMenuMapper;
+import com.om.service.IClientService;
+import com.om.service.IDiagnosticMenuService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.om.utils.FileSizeConverter;
+import com.om.utils.HuaweiObsUtil;
+import com.om.utils.Result;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+
+import java.io.IOException;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static com.om.constant.UploadConstant.DIAGNOSTIC_MENU_PREFIX;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-03-05
+ */
+@Service
+public class DiagnosticMenuServiceImpl extends ServiceImpl<DiagnosticMenuMapper, DiagnosticMenu> implements IDiagnosticMenuService {
+
+    @Resource
+    private HuaweiObsUtil obsUtil;
+
+    @Resource
+    private IClientService clientService;
+
+    @Override
+    public Result createDiaMenu(DiagnosticMenuDTO dto) {
+        if (BeanUtil.isEmpty(dto)) {
+            throw new BadReqException("数据为空");
+        }
+
+        DiagnosticMenu diagnosticMenu = BeanUtil.copyProperties(dto, DiagnosticMenu.class);
+        diagnosticMenu.setCreateTime(LocalDateTime.now());
+        diagnosticMenu.setUpdateTime(LocalDateTime.now());
+
+        this.save(diagnosticMenu);
+
+        return Result.ok();
+    }
+
+    @Override
+    public Result<DiaMenuUploadVO> uploadDiaMenu(MultipartFile file) {
+        long fileSize = file.getSize();
+        String size = FileSizeConverter.convertBytes(fileSize);
+        String filename = file.getOriginalFilename();
+
+        //上传文件
+        LocalDate now = LocalDate.now();
+        int year = now.getYear();
+        int monthValue = now.getMonthValue();
+        int day = now.getDayOfMonth();
+        String prefix = DIAGNOSTIC_MENU_PREFIX + "/" + year + "/" + monthValue + "/" + day;
+        try {
+            String upload = obsUtil.upload(file, prefix);
+            DiaMenuUploadVO vo = new DiaMenuUploadVO();
+            vo.setFileName(filename);
+            vo.setFileSize(size);
+            vo.setSavePath(upload);
+            return Result.ok(vo);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public Result deleteDiaMenu(Integer id) {
+        //根据id查询
+        DiagnosticMenu diagnosticMenu = this.getById(id);
+        if (BeanUtil.isEmpty(diagnosticMenu)) {
+            throw new BadReqException("该诊断菜单不存在");
+        }
+       //根据id删除
+        this.removeById(id);
+        return Result.ok();
+    }
+
+    @Override
+    public Result updateStatus(Integer id, Integer status) {
+        //根据id查询
+        DiagnosticMenu diagnosticMenu = this.getById(id);
+        if (BeanUtil.isEmpty(diagnosticMenu)) {
+            throw new BadReqException("该诊断菜单不存在");
+        }
+
+        diagnosticMenu.setEnableStatus(status);
+        diagnosticMenu.setUpdateTime(LocalDateTime.now());
+        //修改
+        this.updateById(diagnosticMenu);
+        return Result.ok();
+    }
+
+    @Override
+    public Result<DiaMenuQueryPageVO> getPageList(DiaMenuQueryPageDTO dto) {
+        //从dto中获取数据
+        Integer pageSize = dto.getPageSize();
+        Integer pageIndex = dto.getPageIndex();
+        String fileName = dto.getFileName();
+        String versionNum = dto.getVersionNum();
+
+        //分页查询数据库
+        Page<DiagnosticMenu> page = this.lambdaQuery()
+                .like(fileName != null, DiagnosticMenu::getFileName, fileName)
+                .like(versionNum != null, DiagnosticMenu::getVersionNum, versionNum)
+                .orderByDesc(DiagnosticMenu::getCreateTime)
+                .page(new Page<>(pageIndex, pageSize));
+
+        //封装vo
+        DiaMenuQueryPageVO vo = new DiaMenuQueryPageVO();
+        vo.setCurrent((int) page.getCurrent());
+        vo.setSize((int) page.getSize());
+        vo.setPages((int) page.getPages());
+        vo.setTotal((int) page.getTotal());
+        if (fileName !=null || versionNum !=null){
+            vo.setSearchCount(true);
+        }
+
+        List<DiagnosticMenu> records = page.getRecords();
+        List<DiagnosticMenuVO> voList = new ArrayList<>();
+        for (DiagnosticMenu diagnosticMenu : records) {
+            DiagnosticMenuVO diagnosticMenuVO = BeanUtil.copyProperties(diagnosticMenu, DiagnosticMenuVO.class);
+
+            List<Integer> clientIds = Arrays.stream(diagnosticMenu.getClientIds().split(","))
+                    .map(Integer::parseInt)
+                    .collect(Collectors.toList());
+
+            //根据id集合批量查询 客户端
+            List<Client> clients = clientService.listByIds(clientIds);
+            List<String> clientNames = clients.stream().map(c -> c.getName()).collect(Collectors.toList());
+            List<String> clientNums = clients.stream().map(c -> c.getNumber()).collect(Collectors.toList());
+            if (clients!=null){
+                diagnosticMenuVO.setClientNames(clientNames);
+                diagnosticMenuVO.setClientNums(clientNums);
+            }
+            voList.add(diagnosticMenuVO);
+        }
+        vo.setRecords(voList);
+        return Result.ok(vo);
+    }
+
+
+}

+ 25 - 0
src/main/java/com/om/utils/FileSizeConverter.java

@@ -0,0 +1,25 @@
+package com.om.utils;
+
+public class FileSizeConverter {
+    public static void main(String[] args) {
+        String fileSizeString = "48602";
+        long fileSizeInBytes = Long.parseLong(fileSizeString);
+
+        String fileSizeInReadableFormat = convertBytes(fileSizeInBytes);
+        System.out.println(fileSizeInReadableFormat);
+    }
+
+    public static String convertBytes(long fileSize) {
+        String[] units = {"B", "KB", "MB", "GB"};
+
+        int unitIndex = 0;
+        double size = fileSize;
+
+        while (size >= 1024 && unitIndex < units.length - 1) {
+            size /= 1024;
+            unitIndex++;
+        }
+
+        return String.format("%.2f %s", size, units[unitIndex]);
+    }
+}

+ 2 - 2
src/main/java/com/om/utils/HuaweiObsUtil.java

@@ -49,12 +49,12 @@ public class HuaweiObsUtil {
      * @return 文件在OBS中的URL
      * @throws IOException IO异常
      */
-    public String upload(MultipartFile file,String prifix) throws IOException {
+    public String upload(MultipartFile file,String prefix) throws IOException {
         ObsClient obsClient = null;
         try {
             String originalFilename = file.getOriginalFilename();
             // 拼接文件在OBS中的路径
-            String objectName = prifix + "/"+ originalFilename;
+            String objectName = prefix + "/"+ originalFilename;
             // 初始化OBS客户端
             obsClient = new ObsClient(ak, sk, endpoint);
             // 上传文件到OBS

+ 5 - 0
src/main/resources/mapper/DiagnosticMenuMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.om.mapper.DiagnosticMenuMapper">
+
+</mapper>

+ 28 - 0
src/test/java/com/om/Test.java

@@ -0,0 +1,28 @@
+package com.om;
+
+import com.om.entity.dto.DiaMenuQueryPageDTO;
+import com.om.entity.vo.DiaMenuQueryPageVO;
+import com.om.service.IDiagnosticMenuService;
+import com.om.utils.Result;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import javax.annotation.Resource;
+
+@SpringBootTest(classes = com.om.OperationApplication.class)
+public class Test {
+
+    @Resource
+    private IDiagnosticMenuService diagnosticMenuService;
+
+
+    @org.junit.jupiter.api.Test
+    public void Test1(){
+        DiaMenuQueryPageDTO dto = new DiaMenuQueryPageDTO();
+        dto.setPageIndex(1);
+        dto.setPageSize(5);
+        Result<DiaMenuQueryPageVO> pageList = diagnosticMenuService.getPageList(dto);
+        System.out.println(pageList);
+    }
+
+
+}