DiagnosticLogServiceImpl.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package com.om.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.collection.CollectionUtil;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.om.entity.dto.DiaLogQueryPageDTO;
  6. import com.om.entity.po.*;
  7. import com.om.entity.vo.DiaLogQueryPageVO;
  8. import com.om.entity.vo.DiaLogQueryVO;
  9. import com.om.exception.BadReqException;
  10. import com.om.mapper.DiagnosticLogMapper;
  11. import com.om.service.*;
  12. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  13. import com.om.utils.HuaweiObsUtil;
  14. import com.om.utils.Result;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.springframework.stereotype.Service;
  17. import javax.annotation.Resource;
  18. import java.time.LocalDate;
  19. import java.time.LocalDateTime;
  20. import java.util.ArrayList;
  21. import java.util.List;
  22. import static com.om.constant.UploadConstant.DIAGNOSTIC_LOG_PREFIX;
  23. /**
  24. * <p>
  25. * 服务实现类
  26. * </p>
  27. *
  28. * @author bmmx
  29. * @since 2024-02-27
  30. */
  31. @Service
  32. public class DiagnosticLogServiceImpl extends ServiceImpl<DiagnosticLogMapper, DiagnosticLog> implements IDiagnosticLogService {
  33. @Resource
  34. private IUserService userService;
  35. @Resource
  36. private IBrandService brandService;
  37. @Resource
  38. private IClientService clientService;
  39. @Resource
  40. private HuaweiObsUtil obsUtil;
  41. @Resource
  42. private IVciInfoService vciInfoService;
  43. @Override
  44. public Result<DiaLogQueryPageVO> getPageList(DiaLogQueryPageDTO dto) {
  45. //从dto中获取数据
  46. Integer pageIndex = dto.getPageIndex();
  47. Integer pageSize = dto.getPageSize();
  48. LocalDateTime beginTime = dto.getBeginTime();
  49. LocalDateTime endTime = dto.getEndTime();
  50. User one = new User();
  51. if (StringUtils.isNotBlank(dto.getAccount())) {
  52. //根据用户名查询用户
  53. one = userService.lambdaQuery()
  54. .eq(User::getUsername, dto.getAccount())
  55. .one();
  56. if (BeanUtil.isEmpty(one)){
  57. throw new BadReqException("该查询用户不存在");
  58. }
  59. }
  60. VciInfo vciInfo = new VciInfo();
  61. if (StringUtils.isNotBlank(dto.getVciSn())) {
  62. //根据vciSn查询VCI
  63. vciInfo = vciInfoService.lambdaQuery()
  64. .eq(VciInfo::getVciNum, dto.getVciSn())
  65. .one();
  66. if (BeanUtil.isEmpty(vciInfo)){
  67. throw new BadReqException("该查询vci不存在");
  68. }
  69. }
  70. Page<DiagnosticLog> page = this.lambdaQuery()
  71. .like(StringUtils.isNotBlank(dto.getAccount()), DiagnosticLog::getUserId, one.getId())
  72. .like(StringUtils.isNotBlank(dto.getVciSn()), DiagnosticLog::getVciId, vciInfo.getId())
  73. .ge(beginTime != null, DiagnosticLog::getCreateTime, beginTime)
  74. .le(endTime != null, DiagnosticLog::getCreateTime, endTime)
  75. .orderByDesc(DiagnosticLog::getCreateTime)
  76. .page(new Page<>(pageIndex, pageSize));
  77. DiaLogQueryPageVO vo = new DiaLogQueryPageVO();
  78. vo.setCurrent((int) page.getCurrent());
  79. vo.setSize((int) page.getSize());
  80. vo.setPages((int) page.getPages());
  81. vo.setTotal((int) page.getTotal());
  82. if (dto.getAccount() != null || dto.getVciSn()!= null || beginTime != null || endTime != null) {
  83. vo.setSearchCount(true);
  84. }
  85. List<DiagnosticLog> records = page.getRecords();
  86. List<DiaLogQueryVO> diaLogQueryVOS = new ArrayList<>();
  87. for (DiagnosticLog record : records) {
  88. DiaLogQueryVO diaLogQueryVO = BeanUtil.copyProperties(record, DiaLogQueryVO.class);
  89. User user = userService.getById(record.getUserId());
  90. diaLogQueryVO.setAccount(user.getUsername());
  91. Brand brand = brandService.getById(record.getBrandId());
  92. diaLogQueryVO.setBrand(brand.getBrandCn());
  93. Client client = clientService.getById(record.getClientId());
  94. diaLogQueryVO.setClientNum(client.getNumber());
  95. VciInfo vci = vciInfoService.getById(record.getVciId());
  96. diaLogQueryVO.setVciSn(vci.getVciNum());
  97. //todo 车型id vehicleId 查询车型
  98. diaLogQueryVOS.add(diaLogQueryVO);
  99. }
  100. vo.setRecords(diaLogQueryVOS);
  101. return Result.ok(vo);
  102. }
  103. @Override
  104. public Result batchDownload(List<Integer> ids) {
  105. //根据id集合查询
  106. List<DiagnosticLog> diagnosticLogs = this.listByIds(ids);
  107. if (CollectionUtil.isEmpty(diagnosticLogs)){
  108. throw new BadReqException("本页诊断文件异常");
  109. }
  110. LocalDate now = LocalDate.now();
  111. int year = now.getYear();
  112. int monthValue = now.getMonthValue();
  113. int day = now.getDayOfMonth();
  114. List<String> downloadUrls = new ArrayList<>();
  115. String prefix = DIAGNOSTIC_LOG_PREFIX;
  116. for (DiagnosticLog diagnosticLog : diagnosticLogs) {
  117. String nameLog = diagnosticLog.getNameLog();
  118. //获取下载链接
  119. String downloadUrl = obsUtil.getDownloadUrl(nameLog, prefix);
  120. downloadUrls.add(downloadUrl);
  121. }
  122. return Result.ok(downloadUrls);
  123. }
  124. @Override
  125. public Result downloadFile(Integer id) {
  126. //根据id进行查询
  127. DiagnosticLog diagnosticLog = this.getById(id);
  128. if (BeanUtil.isEmpty(diagnosticLog)) {
  129. throw new BadReqException("该诊断日志不存在");
  130. }
  131. //获取文件名称
  132. String nameLog = diagnosticLog.getNameLog();
  133. LocalDate now = LocalDate.now();
  134. int year = now.getYear();
  135. int monthValue = now.getMonthValue();
  136. int day = now.getDayOfMonth();
  137. String prefix = DIAGNOSTIC_LOG_PREFIX;
  138. //获取下载链接
  139. String downloadUrl = obsUtil.getDownloadUrl(nameLog, prefix);
  140. return Result.ok(downloadUrl);
  141. }
  142. }