123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511 |
- package com.om.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.collection.CollectionUtil;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.om.entity.dto.*;
- import com.om.entity.po.*;
- import com.om.entity.vo.*;
- import com.om.exception.BadReqException;
- import com.om.exception.BizException;
- import com.om.mapper.RepairMapper;
- import com.om.service.*;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.om.utils.*;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.context.annotation.Bean;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.multipart.MultipartFile;
- import org.springframework.web.multipart.commons.CommonsMultipartFile;
- import org.springframework.web.multipart.support.StandardServletMultipartResolver;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.*;
- import java.util.stream.Collectors;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author bmmx
- * @since 2024-02-18
- */
- @Service
- public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> implements IRepairService {
- @Resource
- private IFaultCodeService faultCodeService;
- @Resource
- private IEcuInfoService ecuInfoService;
- @Resource
- private IElectronicControlService electronicControlService;
- @Resource
- RepairMapper repairMapper;
- @Resource
- IUserService userService;
- @Resource
- private HuaweiObsUtil huaweiObsUtil;
- @Resource
- private HttpServletRequest request;
- @Override
- @Transactional
- public Result AppCreateReport(APPReportCreateDTO dto) {
- Integer userId = UserContext.getUserId();
- User user = userService.getById(userId);
- // 判断数据、
- if (BeanUtil.isEmpty(dto)) {
- throw new BadReqException("数据为空");
- }
- Repair repair = BeanUtil.copyProperties(dto, Repair.class);
- List<AppElectronicDTO> electronicControls = dto.getElectronicControls();
- List<Integer> eleIds = new ArrayList<>();
- List<ElectronicControl> electronicControlList = new ArrayList<>();
- for (AppElectronicDTO electronicControlDTO : electronicControls) {
- ElectronicControl electronicControl = BeanUtil.copyProperties(electronicControlDTO, ElectronicControl.class);
- electronicControlList.add(electronicControl);
- List<AppEcuInfoDTO> ecuInfors = electronicControlDTO.getEcuInfors();
- List<AppFaultCodeDTO> faultCodes = electronicControlDTO.getFaultCodes();
- List<EcuInfo> ecuInfos = BeanUtil.copyToList(ecuInfors, EcuInfo.class);
- List<FaultCode> faultCodes1 = BeanUtil.copyToList(faultCodes, FaultCode.class);
- for (EcuInfo ecuInfo : ecuInfos) {
- ecuInfo.setElectronicControlId(electronicControl.getId());
- }
- for (FaultCode faultCode : faultCodes1) {
- faultCode.setElectronicControlId(electronicControl.getId());
- }
- eleIds.add(electronicControl.getId());
- ecuInfoService.saveBatch(ecuInfos);
- faultCodeService.saveBatch(faultCodes1);
- }
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < eleIds.size(); i++) {
- sb.append(eleIds);
- if (i != eleIds.size() - 1) {
- sb.append(",");
- }
- }
- repair.setElectronicControlIds(sb.toString());
- electronicControlService.saveBatch(electronicControlList);
- repair.setUsername(user.getUsername());
- this.save(repair);
- return Result.ok();
- }
- @Override
- public Result<AppRepairQueryPageVO> AppGetPageList(APPRepairQueryPageDTO dto) {
- Integer userId = UserContext.getUserId();
- User user = userService.getById(userId);
- if (BeanUtil.isEmpty(user)) {
- throw new BizException("用户不存在");
- }
- //获取数据
- Integer pageIndex = dto.getPageIndex();
- Integer pageSize = dto.getPageSize();
- //分页查询
- Page<Repair> page = this.lambdaQuery()
- .orderByDesc(Repair::getCreateTime)
- .eq(Repair::getUsername, user.getUsername())
- .page(new Page<>(pageIndex, pageSize));
- if (BeanUtil.isEmpty(page)) {
- throw new BadReqException("请求失败");
- }
- AppRepairQueryPageVO vo = new AppRepairQueryPageVO();
- vo.setSize(pageSize);
- vo.setCurrent(pageIndex);
- vo.setPages((int) page.getPages());
- vo.setTotal((int) page.getTotal());
- List<Repair> records = page.getRecords();
- if (CollectionUtil.isEmpty(records)) {
- records = Collections.emptyList();
- }
- List<DiagnosticReportVO> list = new ArrayList<>();
- for (Repair record : records) {
- DiagnosticReportVO diagnosticReportVO = new DiagnosticReportVO();
- diagnosticReportVO.setCreationTime(LocalDateTime.now());
- diagnosticReportVO.setDiagnosticReportId(record.getId());
- diagnosticReportVO.setDiagnosticReportName(record.getMainTitle());
- diagnosticReportVO.setFileName(record.getFileName());
- String electronicControlIds = record.getElectronicControlIds();
- List<Integer> eleIds = Arrays.stream(electronicControlIds.split(","))
- .map(Integer::parseInt)
- .collect(Collectors.toList());
- for (Integer eleId : eleIds) {
- List<FaultCode> faultCodeList = faultCodeService.lambdaQuery()
- .eq(FaultCode::getElectronicControlId, eleId)
- .list();
- diagnosticReportVO.setFaultCodesNumber(String.valueOf(faultCodeList.size()));
- }
- list.add(diagnosticReportVO);
- }
- vo.setRecords(list);
- return Result.ok(vo);
- }
- @Override
- @Transactional
- public Result create(RepairDTO repairDTO) {
- Repair repair = new Repair();
- BeanUtil.copyProperties(repairDTO,repair);
- return Result.ok();
- }
- @Override
- @Transactional
- public Result delete(Integer id) {
- Repair repair = this.getById(id);
- if (repair == null) {
- throw new BadReqException("删除错误");
- }
- String electronicControlIds = repair.getElectronicControlIds();
- List<Integer> eleIds = Arrays.stream(electronicControlIds.split(","))
- .map(Integer::parseInt)
- .collect(Collectors.toList());
- for (Integer eleId : eleIds) {
- List<Integer> faultIds = faultCodeService.lambdaQuery()
- .eq(FaultCode::getElectronicControlId, eleId)
- .list().stream().map(c -> c.getId()).collect(Collectors.toList());
- List<Integer> ecuIds = ecuInfoService.lambdaQuery()
- .eq(EcuInfo::getElectronicControlId, eleId)
- .list().stream().map(c -> c.getId()).collect(Collectors.toList());
- faultCodeService.removeByIds(faultIds);
- ecuInfoService.removeByIds(ecuIds);
- }
- electronicControlService.removeByIds(eleIds);
- this.removeById(id);
- return Result.ok();
- }
- @Override
- public Result<RepairVO> getByIds(Integer id) {
- Repair repair = this.getById(id);
- if (repair == null) {
- throw new BadReqException("查询错误");
- }
- String electronicControlIds = repair.getElectronicControlIds();
- RepairVO vo = new RepairVO();
- List<Integer> eleIds = Arrays.stream(electronicControlIds.split(","))
- .map(Integer::parseInt)
- .collect(Collectors.toList());
- BeanUtil.copyProperties(repair, vo);
- ReportTitleDto reportTitleDto = new ReportTitleDto();
- BeanUtil.copyProperties(repair,reportTitleDto);
- List<ElectronicControls> electronicControlsList = new ArrayList<>();
- int eleCount = 0;
- int faultCount = 0;
- for (Integer eleId : eleIds) {
- ElectronicControls electronicControls = new ElectronicControls();
- ElectronicControl electronicControl = electronicControlService.getById(eleId);
- BeanUtil.copyProperties(electronicControl,reportTitleDto);
- electronicControls.setElectronicControlName(electronicControl.getElectronicControlName());
- List<EcuInfo> list = ecuInfoService.lambdaQuery()
- .eq(EcuInfo::getElectronicControlId, eleId)
- .list();
- electronicControls.setEcuInfo(list);
- List<FaultCode> faultCodeList = faultCodeService.lambdaQuery()
- .eq(FaultCode::getElectronicControlId, eleId)
- .list();
- electronicControls.setFaultCode(faultCodeList);
- electronicControlsList.add(electronicControls);
- eleCount++;
- faultCount += faultCodeList.size();
- }
- vo.setElectronicControls(electronicControlsList);
- vo.setElectronicControlCount(eleCount);
- vo.setFaultCodeCount(faultCount);
- vo.setReportTitleDto(reportTitleDto);
- return Result.ok(vo);
- }
- @Override
- public Result<RepairQueryPageVO> getPageList(RepairQueryPageDTO dto) {
- //从dto中获取数据
- Integer pageIndex = dto.getPageIndex();
- Integer pageSize = dto.getPageSize();
- LocalDateTime beginTime = dto.getBeginTime();
- LocalDateTime endTime = dto.getEndTime();
- String searchNum = dto.getSearchNum();
- // String searchVIN = dto.getSearchVIN();
- String searchDistributor = dto.getSearchDistributor();
- //分页查询
- Page<Repair> page = this.lambdaQuery()
- .like(StringUtils.isNotBlank(searchNum), Repair::getRepairNum, searchNum)
- // .like(StringUtils.isNotBlank(searchVIN),Repair::)
- .like(StringUtils.isNotBlank(searchDistributor), Repair::getDepartmentName, searchDistributor)
- .ge(beginTime != null, Repair::getCreateTime, beginTime)
- .le(endTime != null, Repair::getCreateTime, endTime)
- .page(new Page<>(pageIndex, pageSize));
- RepairQueryPageVO vo = new RepairQueryPageVO();
- vo.setCurrent((int) page.getCurrent());
- vo.setSize((int) page.getSize());
- vo.setPages((int) page.getPages());
- vo.setTotal((int) page.getTotal());
- if (StringUtils.isNotBlank(searchNum) || StringUtils.isNotBlank(searchDistributor) || beginTime != null || endTime != null) {
- vo.setSearchCount(true);
- }
- List<Repair> records = page.getRecords();
- List<QueryRepairVO> queryRepairVOList = new ArrayList<>();
- for (Repair record : records) {
- QueryRepairVO queryRepairVO = BeanUtil.copyProperties(record, QueryRepairVO.class);
- String electronicControlIds = record.getElectronicControlIds();
- List<Integer> eleIds = Arrays.stream(electronicControlIds.split(","))
- .map(Integer::parseInt)
- .collect(Collectors.toList());
- List<ElectronicControl> electronicControlList = electronicControlService.listByIds(eleIds);
- //查询系统数量
- queryRepairVO.setSystemCount(electronicControlList.size());
- int faultCount = 0;
- for (ElectronicControl electronicControl : electronicControlList) {
- List<FaultCode> faultCodeList = faultCodeService.lambdaQuery()
- .eq(electronicControl != null, FaultCode::getElectronicControlId, electronicControl.getId())
- .list();
- faultCount += faultCodeList.size();
- }
- //查询故障数量
- queryRepairVO.setFaultCount(faultCount);
- queryRepairVOList.add(queryRepairVO);
- }
- vo.setRecords(queryRepairVOList);
- return Result.ok(vo);
- }
- @Override
- public Result<String> reportPdf(Integer id) {
- //根据id查询报告是否存在
- Repair repair = this.getById(id);
- if (BeanUtil.isEmpty(repair)){
- throw new BadReqException("该诊断报告不存在");
- }
- Map<String,String> baseMap = new HashMap<>();
- baseMap.put("车架号",repair.getVin());
- baseMap.put("年款",repair.getMileage());
- baseMap.put("里程",repair.getMileage());
- baseMap.put("诊断路径",repair.getDiagnosticPath());
- baseMap.put("报告编号",repair.getRepairNum());
- baseMap.put("SN",repair.getSn());
- String username = repair.getUsername();
- //根据用户名查询用户
- User user = userService.lambdaQuery()
- .eq(User::getUsername, username)
- .one();
- if (BeanUtil.isEmpty(user)){
- throw new BadReqException("该用户不存在");
- }
- Map<String,String> companyMap = new HashMap<>();
- companyMap.put("公司",user.getCompany());
- companyMap.put("电话",user.getTel());
- companyMap.put("地址",user.getAddress());
- List<ControlListMap> controlListMap = new ArrayList<>();
- String electronicControlIds = repair.getElectronicControlIds();
- List<Integer> eleIds = Arrays.stream(electronicControlIds.split(","))
- .map(Integer::parseInt)
- .collect(Collectors.toList());
- List<ElectronicControl> electronicControlList = electronicControlService.listByIds(eleIds);
- for (Integer eleId : eleIds) {
- ElectronicControl electronicControl = electronicControlService.getById(eleId);
- List<EcuInfo> EcuList = ecuInfoService.lambdaQuery()
- .eq(EcuInfo::getElectronicControlId, eleId)
- .list();
- List<FaultCode> FaultList = faultCodeService.lambdaQuery()
- .eq(FaultCode::getElectronicControlId, eleId)
- .eq(FaultCode::getStatus,1)
- .list();
- Map<String,String> faultCodeMap = new HashMap<>();
- Map<String,String> versionMap = new HashMap<>();
- for (EcuInfo ecuInfo : EcuList) {
- versionMap.put(ecuInfo.getStrCaption(),ecuInfo.getStrInformation());
- }
- for (FaultCode faultCode : FaultList) {
- faultCodeMap.put(faultCode.getFaultCode(),faultCode.getDescription());
- }
- ControlListMap controlListMap1 = new ControlListMap();
- controlListMap1.setName(electronicControl.getElectronicControlName());
- controlListMap1.setVersionMap(versionMap);
- controlListMap1.setFaultCodeMap(faultCodeMap);
- controlListMap.add(controlListMap1);
- }
- File file = ITextPdfUtil.MapToPDF(repair.getId(), controlListMap, baseMap, companyMap);
- if (file==null){
- throw new BizException("该pdf文件不存在");
- }
- try {
- huaweiObsUtil.upload(file, "report");
- String uploadUrl1 = huaweiObsUtil.getUploadUrl(file.getName(), "report");
- file.delete();
- return Result.ok(uploadUrl1);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- @Override
- public Result<String> reportH5(Integer id) {
- //根据id查询报告是否存在
- Repair repair = this.getById(id);
- if (BeanUtil.isEmpty(repair)){
- throw new BadReqException("该诊断报告不存在");
- }
- Map<String,String> baseMap = new HashMap<>();
- baseMap.put("车架号",repair.getVin());
- baseMap.put("年款",repair.getMileage());
- baseMap.put("里程",repair.getMileage());
- baseMap.put("诊断路径",repair.getDiagnosticPath());
- baseMap.put("报告编号",repair.getRepairNum());
- baseMap.put("SN",repair.getSn());
- String username = repair.getUsername();
- //根据用户名查询用户
- User user = userService.lambdaQuery()
- .eq(User::getUsername, username)
- .one();
- if (BeanUtil.isEmpty(user)){
- throw new BadReqException("该用户不存在");
- }
- Map<String,String> companyMap = new HashMap<>();
- companyMap.put("公司",user.getCompany());
- companyMap.put("电话",user.getTel());
- companyMap.put("地址",user.getAddress());
- List<ControlListMap> controlListMap = new ArrayList<>();
- String electronicControlIds = repair.getElectronicControlIds();
- List<Integer> eleIds = Arrays.stream(electronicControlIds.split(","))
- .map(Integer::parseInt)
- .collect(Collectors.toList());
- List<ElectronicControl> electronicControlList = electronicControlService.listByIds(eleIds);
- for (Integer eleId : eleIds) {
- ElectronicControl electronicControl = electronicControlService.getById(eleId);
- List<EcuInfo> EcuList = ecuInfoService.lambdaQuery()
- .eq(EcuInfo::getElectronicControlId, eleId)
- .list();
- List<FaultCode> FaultList = faultCodeService.lambdaQuery()
- .eq(FaultCode::getElectronicControlId, eleId)
- .eq(FaultCode::getStatus,1)
- .list();
- Map<String,String> faultCodeMap = new HashMap<>();
- Map<String,String> versionMap = new HashMap<>();
- for (EcuInfo ecuInfo : EcuList) {
- versionMap.put(ecuInfo.getStrCaption(),ecuInfo.getStrInformation());
- }
- for (FaultCode faultCode : FaultList) {
- faultCodeMap.put(faultCode.getFaultCode(),faultCode.getDescription());
- }
- ControlListMap controlListMap1 = new ControlListMap();
- controlListMap1.setName(electronicControl.getElectronicControlName());
- controlListMap1.setVersionMap(versionMap);
- controlListMap1.setFaultCodeMap(faultCodeMap);
- controlListMap.add(controlListMap1);
- }
- File file = HtmlGenerator.generateHtmlByMap(repair.getId(), controlListMap, baseMap, companyMap);
- if (file==null){
- throw new BizException("该h5文件不存在");
- }
- try {
- huaweiObsUtil.upload(file,"h5");
- String uploadUrl1 = huaweiObsUtil.getUploadUrl(file.getName(), "h5");
- file.delete();
- return Result.ok(uploadUrl1);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
|