DiagnosticMenuServiceImpl.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. package com.om.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.om.entity.dto.AppmenuUpdateDTO;
  6. import com.om.entity.dto.DiaMenuQueryPageDTO;
  7. import com.om.entity.dto.DiagnosticMenuDTO;
  8. import com.om.entity.dto.GuidDTO;
  9. import com.om.entity.po.Client;
  10. import com.om.entity.po.DiagnosticMenu;
  11. import com.om.entity.po.DiagnosticMenuVO;
  12. import com.om.entity.po.Distributor;
  13. import com.om.entity.vo.AppMenuVO;
  14. import com.om.entity.vo.DiaMenuQueryPageVO;
  15. import com.om.entity.vo.DiaMenuUploadVO;
  16. import com.om.entity.vo.DistributorQueryPageVO;
  17. import com.om.exception.BadReqException;
  18. import com.om.mapper.DiagnosticMenuMapper;
  19. import com.om.service.IClientService;
  20. import com.om.service.IDiagnosticMenuService;
  21. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  22. import com.om.utils.*;
  23. import org.springframework.context.annotation.Bean;
  24. import org.springframework.stereotype.Service;
  25. import org.springframework.web.multipart.MultipartFile;
  26. import javax.annotation.Resource;
  27. import java.io.IOException;
  28. import java.time.LocalDate;
  29. import java.time.LocalDateTime;
  30. import java.util.ArrayList;
  31. import java.util.Arrays;
  32. import java.util.List;
  33. import java.util.stream.Collectors;
  34. import static com.om.constant.UploadConstant.DIAGNOSTIC_MENU_PREFIX;
  35. /**
  36. * <p>
  37. * 服务实现类
  38. * </p>
  39. *
  40. * @author bmmx
  41. * @since 2024-03-05
  42. */
  43. @Service
  44. public class DiagnosticMenuServiceImpl extends ServiceImpl<DiagnosticMenuMapper, DiagnosticMenu> implements IDiagnosticMenuService {
  45. @Resource
  46. private HuaweiObsUtil obsUtil;
  47. @Resource
  48. private IClientService clientService;
  49. @Resource
  50. private JwtUtils jwtUtils;
  51. @Override
  52. public Result createDiaMenu(DiagnosticMenuDTO dto) {
  53. if (BeanUtil.isEmpty(dto)) {
  54. throw new BadReqException("数据为空");
  55. }
  56. DiagnosticMenu diagnosticMenu = BeanUtil.copyProperties(dto, DiagnosticMenu.class);
  57. diagnosticMenu.setCreateTime(LocalDateTime.now());
  58. diagnosticMenu.setUpdateTime(LocalDateTime.now());
  59. this.save(diagnosticMenu);
  60. return Result.ok();
  61. }
  62. @Override
  63. public Result<DiaMenuUploadVO> uploadDiaMenu(MultipartFile file) {
  64. long fileSize = file.getSize();
  65. String size = FileSizeConverter.convertBytes(fileSize);
  66. String filename = file.getOriginalFilename();
  67. //上传文件
  68. LocalDate now = LocalDate.now();
  69. int year = now.getYear();
  70. int monthValue = now.getMonthValue();
  71. int day = now.getDayOfMonth();
  72. String prefix = DIAGNOSTIC_MENU_PREFIX + "/" + year + "/" + monthValue + "/" + day;
  73. try {
  74. String upload = obsUtil.upload(file, prefix);
  75. DiaMenuUploadVO vo = new DiaMenuUploadVO();
  76. vo.setFileName(filename);
  77. vo.setFileSize(size);
  78. vo.setSavePath(upload);
  79. return Result.ok(vo);
  80. } catch (IOException e) {
  81. throw new RuntimeException(e);
  82. }
  83. }
  84. @Override
  85. public Result deleteDiaMenu(Integer id) {
  86. //根据id查询
  87. DiagnosticMenu diagnosticMenu = this.getById(id);
  88. if (BeanUtil.isEmpty(diagnosticMenu)) {
  89. throw new BadReqException("该诊断菜单不存在");
  90. }
  91. //根据id删除
  92. this.removeById(id);
  93. return Result.ok();
  94. }
  95. @Override
  96. public Result updateStatus(Integer id, Integer status) {
  97. //根据id查询
  98. DiagnosticMenu diagnosticMenu = this.getById(id);
  99. if (BeanUtil.isEmpty(diagnosticMenu)) {
  100. throw new BadReqException("该诊断菜单不存在");
  101. }
  102. diagnosticMenu.setEnableStatus(status);
  103. diagnosticMenu.setUpdateTime(LocalDateTime.now());
  104. //修改
  105. this.updateById(diagnosticMenu);
  106. return Result.ok();
  107. }
  108. @Override
  109. public Result<DiaMenuQueryPageVO> getPageList(DiaMenuQueryPageDTO dto) {
  110. //从dto中获取数据
  111. Integer pageSize = dto.getPageSize();
  112. Integer pageIndex = dto.getPageIndex();
  113. String fileName = dto.getFileName();
  114. String versionNum = dto.getVersionNum();
  115. //分页查询数据库
  116. Page<DiagnosticMenu> page = this.lambdaQuery()
  117. .like(fileName != null, DiagnosticMenu::getFileName, fileName)
  118. .like(versionNum != null, DiagnosticMenu::getVersionNum, versionNum)
  119. .orderByDesc(DiagnosticMenu::getCreateTime)
  120. .page(new Page<>(pageIndex, pageSize));
  121. //封装vo
  122. DiaMenuQueryPageVO vo = new DiaMenuQueryPageVO();
  123. vo.setCurrent((int) page.getCurrent());
  124. vo.setSize((int) page.getSize());
  125. vo.setPages((int) page.getPages());
  126. vo.setTotal((int) page.getTotal());
  127. if (fileName !=null || versionNum !=null){
  128. vo.setSearchCount(true);
  129. }
  130. List<DiagnosticMenu> records = page.getRecords();
  131. List<DiagnosticMenuVO> voList = new ArrayList<>();
  132. for (DiagnosticMenu diagnosticMenu : records) {
  133. DiagnosticMenuVO diagnosticMenuVO = BeanUtil.copyProperties(diagnosticMenu, DiagnosticMenuVO.class);
  134. List<Integer> clientIds = Arrays.stream(diagnosticMenu.getClientIds().split(","))
  135. .map(Integer::parseInt)
  136. .collect(Collectors.toList());
  137. //根据id集合批量查询 客户端
  138. List<Client> clients = clientService.listByIds(clientIds);
  139. List<String> clientNames = clients.stream().map(c -> c.getName()).collect(Collectors.toList());
  140. List<String> clientNums = clients.stream().map(c -> c.getNumber()).collect(Collectors.toList());
  141. if (clients!=null){
  142. diagnosticMenuVO.setClientNames(clientNames);
  143. diagnosticMenuVO.setClientNums(clientNums);
  144. }
  145. voList.add(diagnosticMenuVO);
  146. }
  147. vo.setRecords(voList);
  148. return Result.ok(vo);
  149. }
  150. @Override
  151. public Result menuUpdate(AppmenuUpdateDTO dto) {
  152. if (BeanUtil.isEmpty(dto)){
  153. return Result.fail("未获取到数据").result(ResultCode.NO_DATA);
  154. }
  155. String version = dto.getVersion();
  156. String guid = dto.getGuid();
  157. GuidDTO guidDTO = AesUtil.getGuidDTOFromGuid(guid);
  158. String clientNum = guidDTO.getClientNum();
  159. //根据客户端编号查询id
  160. Client client = clientService.lambdaQuery()
  161. .eq(Client::getNumber, clientNum)
  162. .one();
  163. if (BeanUtil.isEmpty(client)){
  164. throw new BadReqException("该客户端不存在");
  165. }
  166. QueryWrapper<DiagnosticMenu> wrapper = new QueryWrapper<>();
  167. wrapper.apply("CONCAT(',', client_ids, ',') LIKE {0}", "%,"+client.getId()+",%");
  168. DiagnosticMenu diagnosticMenu = this.getOne(wrapper);
  169. if (BeanUtil.isEmpty(diagnosticMenu)){
  170. throw new BadReqException("该菜单不存在");
  171. }
  172. AppMenuVO vo = new AppMenuVO();
  173. BeanUtil.copyProperties(diagnosticMenu,vo);
  174. vo.setUrl(diagnosticMenu.getSavePath());
  175. vo.setVersion(diagnosticMenu.getVersionNum());
  176. return Result.ok(vo);
  177. }
  178. }