package com.om.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.om.entity.dto.DiaLogQueryPageDTO; import com.om.entity.po.*; import com.om.entity.vo.DiaLogQueryPageVO; import com.om.entity.vo.DiaLogQueryVO; import com.om.exception.BadReqException; import com.om.mapper.DiagnosticLogMapper; import com.om.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.om.utils.HuaweiObsUtil; import com.om.utils.Result; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import static com.om.constant.UploadConstant.DIAGNOSTIC_LOG_PREFIX; /** *

* 服务实现类 *

* * @author bmmx * @since 2024-02-27 */ @Service public class DiagnosticLogServiceImpl extends ServiceImpl implements IDiagnosticLogService { @Resource private IUserService userService; @Resource private IBrandService brandService; @Resource private IClientService clientService; @Resource private HuaweiObsUtil obsUtil; @Resource private IVciInfoService vciInfoService; @Override public Result getPageList(DiaLogQueryPageDTO dto) { //从dto中获取数据 Integer pageIndex = dto.getPageIndex(); Integer pageSize = dto.getPageSize(); LocalDateTime beginTime = dto.getBeginTime(); LocalDateTime endTime = dto.getEndTime(); User one = new User(); if (StringUtils.isNotBlank(dto.getAccount())) { //根据用户名查询用户 one = userService.lambdaQuery() .eq(User::getUsername, dto.getAccount()) .one(); if (BeanUtil.isEmpty(one)){ throw new BadReqException("该查询用户不存在"); } } VciInfo vciInfo = new VciInfo(); if (StringUtils.isNotBlank(dto.getVciSn())) { //根据vciSn查询VCI vciInfo = vciInfoService.lambdaQuery() .eq(VciInfo::getVciNum, dto.getVciSn()) .one(); if (BeanUtil.isEmpty(vciInfo)){ throw new BadReqException("该查询vci不存在"); } } Page page = this.lambdaQuery() .like(StringUtils.isNotBlank(dto.getAccount()), DiagnosticLog::getUserId, one.getId()) .like(StringUtils.isNotBlank(dto.getVciSn()), DiagnosticLog::getVciId, vciInfo.getId()) .ge(beginTime != null, DiagnosticLog::getCreateTime, beginTime) .le(endTime != null, DiagnosticLog::getCreateTime, endTime) .orderByDesc(DiagnosticLog::getCreateTime) .page(new Page<>(pageIndex, pageSize)); DiaLogQueryPageVO vo = new DiaLogQueryPageVO(); vo.setCurrent((int) page.getCurrent()); vo.setSize((int) page.getSize()); vo.setPages((int) page.getPages()); vo.setTotal((int) page.getTotal()); if (dto.getAccount() != null || dto.getVciSn()!= null || beginTime != null || endTime != null) { vo.setSearchCount(true); } List records = page.getRecords(); List diaLogQueryVOS = new ArrayList<>(); for (DiagnosticLog record : records) { DiaLogQueryVO diaLogQueryVO = BeanUtil.copyProperties(record, DiaLogQueryVO.class); User user = userService.getById(record.getUserId()); diaLogQueryVO.setAccount(user.getUsername()); Brand brand = brandService.getById(record.getBrandId()); diaLogQueryVO.setBrand(brand.getBrandCn()); Client client = clientService.getById(record.getClientId()); diaLogQueryVO.setClientNum(client.getNumber()); VciInfo vci = vciInfoService.getById(record.getVciId()); diaLogQueryVO.setVciSn(vci.getVciNum()); //todo 车型id vehicleId 查询车型 diaLogQueryVOS.add(diaLogQueryVO); } vo.setRecords(diaLogQueryVOS); return Result.ok(vo); } @Override public Result batchDownload(List ids) { //根据id集合查询 List diagnosticLogs = this.listByIds(ids); if (CollectionUtil.isEmpty(diagnosticLogs)){ throw new BadReqException("本页诊断文件异常"); } LocalDate now = LocalDate.now(); int year = now.getYear(); int monthValue = now.getMonthValue(); int day = now.getDayOfMonth(); List downloadUrls = new ArrayList<>(); String prefix = DIAGNOSTIC_LOG_PREFIX; for (DiagnosticLog diagnosticLog : diagnosticLogs) { String nameLog = diagnosticLog.getNameLog(); //获取下载链接 String downloadUrl = obsUtil.getDownloadUrl(nameLog, prefix); downloadUrls.add(downloadUrl); } return Result.ok(downloadUrls); } @Override public Result downloadFile(Integer id) { //根据id进行查询 DiagnosticLog diagnosticLog = this.getById(id); if (BeanUtil.isEmpty(diagnosticLog)) { throw new BadReqException("该诊断日志不存在"); } //获取文件名称 String nameLog = diagnosticLog.getNameLog(); LocalDate now = LocalDate.now(); int year = now.getYear(); int monthValue = now.getMonthValue(); int day = now.getDayOfMonth(); String prefix = DIAGNOSTIC_LOG_PREFIX; //获取下载链接 String downloadUrl = obsUtil.getDownloadUrl(nameLog, prefix); return Result.ok(downloadUrl); } }