DiagnosticLogServiceImpl.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  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.AppDiagLogDTO;
  6. import com.om.entity.dto.DiaLogQueryPageDTO;
  7. import com.om.entity.dto.DiagnoseLogVehicleInfo;
  8. import com.om.entity.dto.GuidDTO;
  9. import com.om.entity.po.*;
  10. import com.om.entity.vo.DiaLogQueryPageVO;
  11. import com.om.entity.vo.DiaLogQueryVO;
  12. import com.om.exception.BadReqException;
  13. import com.om.mapper.DiagnosticLogMapper;
  14. import com.om.service.*;
  15. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  16. import com.om.utils.AesUtil;
  17. import com.om.utils.HuaweiObsUtil;
  18. import com.om.utils.Result;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import javax.annotation.Resource;
  23. import java.time.LocalDate;
  24. import java.time.LocalDateTime;
  25. import java.util.ArrayList;
  26. import java.util.List;
  27. import static com.om.constant.UploadConstant.DIAGNOSTIC_LOG_PREFIX;
  28. /**
  29. * <p>
  30. * 服务实现类
  31. * </p>
  32. *
  33. * @author bmmx
  34. * @since 2024-02-27
  35. */
  36. @Service
  37. public class DiagnosticLogServiceImpl extends ServiceImpl<DiagnosticLogMapper, DiagnosticLog> implements IDiagnosticLogService {
  38. @Resource
  39. private IUserService userService;
  40. @Resource
  41. private IBrandService brandService;
  42. @Resource
  43. private IClientService clientService;
  44. @Resource
  45. private HuaweiObsUtil obsUtil;
  46. @Resource
  47. private IVciInfoService vciInfoService;
  48. @Override
  49. public Result<DiaLogQueryPageVO> getPageList(DiaLogQueryPageDTO dto) {
  50. //从dto中获取数据
  51. Integer pageIndex = dto.getPageIndex();
  52. Integer pageSize = dto.getPageSize();
  53. LocalDateTime beginTime = dto.getBeginTime();
  54. LocalDateTime endTime = dto.getEndTime();
  55. String vciSn = dto.getVciSn();
  56. String account = dto.getAccount();
  57. Page<DiagnosticLog> page = this.lambdaQuery()
  58. .like(StringUtils.isNotBlank(account), DiagnosticLog::getUsername, account)
  59. .like(StringUtils.isNotBlank(vciSn), DiagnosticLog::getVciSn, vciSn)
  60. .ge(beginTime != null, DiagnosticLog::getCreateTime, beginTime)
  61. .le(endTime != null, DiagnosticLog::getCreateTime, endTime)
  62. .orderByDesc(DiagnosticLog::getCreateTime)
  63. .page(new Page<>(pageIndex, pageSize));
  64. DiaLogQueryPageVO vo = new DiaLogQueryPageVO();
  65. vo.setCurrent((int) page.getCurrent());
  66. vo.setSize((int) page.getSize());
  67. vo.setPages((int) page.getPages());
  68. vo.setTotal((int) page.getTotal());
  69. if (dto.getAccount() != null || dto.getVciSn() != null || beginTime != null || endTime != null) {
  70. vo.setSearchCount(true);
  71. }
  72. List<DiagnosticLog> records = page.getRecords();
  73. List<DiaLogQueryVO> diaLogQueryVOS = new ArrayList<>();
  74. for (DiagnosticLog record : records) {
  75. DiaLogQueryVO diaLogQueryVO = BeanUtil.copyProperties(record, DiaLogQueryVO.class);
  76. diaLogQueryVO.setAccount(record.getUsername());
  77. diaLogQueryVO.setBrand(record.getBrandName());
  78. Client client = clientService
  79. .lambdaQuery()
  80. .eq(Client::getNumber,record.getClientNum())
  81. .one();
  82. if (client != null) {
  83. diaLogQueryVO.setClientNum(client.getNumber());
  84. diaLogQueryVO.setClientName(client.getName());
  85. }
  86. diaLogQueryVO.setVciSn(record.getVciSn());
  87. //todo 车型id vehicleId 查询车型
  88. diaLogQueryVOS.add(diaLogQueryVO);
  89. }
  90. vo.setRecords(diaLogQueryVOS);
  91. return Result.ok(vo);
  92. }
  93. @Override
  94. public Result batchDownload(List<Integer> ids) {
  95. //根据id集合查询
  96. List<DiagnosticLog> diagnosticLogs = this.listByIds(ids);
  97. if (CollectionUtil.isEmpty(diagnosticLogs)) {
  98. throw new BadReqException("本页诊断文件异常");
  99. }
  100. List<String> downloadUrls = new ArrayList<>();
  101. String prefix = DIAGNOSTIC_LOG_PREFIX;
  102. for (DiagnosticLog diagnosticLog : diagnosticLogs) {
  103. String nameLog = diagnosticLog.getNameLog();
  104. int lastIndexOf = nameLog.lastIndexOf("/");
  105. if (lastIndexOf != -1) {
  106. nameLog = nameLog.substring(lastIndexOf + 1);
  107. }
  108. //获取下载链接
  109. String downloadUrl = obsUtil.getUploadUrl(nameLog, prefix);
  110. downloadUrls.add(downloadUrl);
  111. }
  112. return Result.ok(downloadUrls);
  113. }
  114. @Override
  115. public Result downloadFile(Integer id) {
  116. //根据id进行查询
  117. DiagnosticLog diagnosticLog = this.getById(id);
  118. if (BeanUtil.isEmpty(diagnosticLog)) {
  119. throw new BadReqException("该诊断日志不存在");
  120. }
  121. //获取文件名称
  122. String nameLog = diagnosticLog.getNameLog();
  123. int lastIndexOf = nameLog.lastIndexOf("/");
  124. if (lastIndexOf != -1) {
  125. nameLog = nameLog.substring(lastIndexOf + 1);
  126. }
  127. String prefix = DIAGNOSTIC_LOG_PREFIX;
  128. //获取下载链接
  129. String downloadUrl = obsUtil.getUploadUrl(nameLog, prefix);
  130. return Result.ok(downloadUrl);
  131. }
  132. @Override
  133. @Transactional
  134. public Result updateDiagLog(AppDiagLogDTO dto) {
  135. if (BeanUtil.isEmpty(dto)) {
  136. throw new BadReqException("参数为空!!");
  137. }
  138. String username = dto.getUsername();
  139. String guid = dto.getGuid();
  140. GuidDTO guidDTO = AesUtil.getGuidDTOFromGuid(guid);
  141. String clientNum = guidDTO.getClientNum();
  142. List<DiagnoseLogVehicleInfo> vehicleInfo = dto.getVehicleInfo();
  143. for (DiagnoseLogVehicleInfo diagnoseLogVehicleInfo : vehicleInfo) {
  144. DiagnosticLog diagnosticLog = BeanUtil.copyProperties(diagnoseLogVehicleInfo, DiagnosticLog.class);
  145. /*
  146. VciInfo vciInfo = vciInfoService.lambdaQuery()
  147. .eq(VciInfo::getVciNum, diagnoseLogVehicleInfo.getVciSn())
  148. .one();
  149. if (BeanUtil.isEmpty(vciInfo)){
  150. throw new BadReqException("该vci设备不存在!!!");
  151. }
  152. */
  153. diagnosticLog.setVciSn(diagnoseLogVehicleInfo.getVciSn());
  154. diagnosticLog.setClientNum(clientNum);
  155. diagnosticLog.setBrandName(diagnoseLogVehicleInfo.getBrand());
  156. diagnosticLog.setCreateTime(LocalDateTime.now());
  157. diagnosticLog.setUpdateTime(LocalDateTime.now());
  158. diagnosticLog.setUsername(username);
  159. this.save(diagnosticLog);
  160. }
  161. return Result.ok();
  162. }
  163. @Override
  164. public Result delete(Integer id) {
  165. DiagnosticLog diagnosticLog = this.getById(id);
  166. if (BeanUtil.isEmpty(diagnosticLog)) {
  167. throw new BadReqException("该诊断日志不存在");
  168. }
  169. return Result.ok(this.removeById(diagnosticLog.getId()));
  170. }
  171. }